android 文件监听器

时间:2014-05-07 15:54:02   收藏:0   阅读:418

(1)程序说明

     1)首先要添加文件创建,删除,和写入数据的权限

      2)接着扩展fileobseerver,写SDk文件监听类。可以查看下文的文件监听器源码

      3)如何启动文件监控?

            对于Activity来说通常在onResume()方法中调用startwatching()来启动文件监控。

         在onPause()方法中调用stopwatching()来取消文件监控。   

(2)布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/label_01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name"
            android:textSize="20dp" />

        <EditText
            android:id="@+id/filename"
            android:layout_width="160dp"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/label_01"
            android:layout_toRightOf="@id/label_01" />
    </RelativeLayout>

    <TextView
        android:id="@+id/label_02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/neirong" />

    <EditText
        android:id="@+id/content"
        android:layout_width="fill_parent"
        android:layout_height="120px"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/savebutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:text="@string/save" />

        <Button
            android:id="@+id/readbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:text="@string/read" />
    </LinearLayout>

    <TextView
        android:id="@+id/textcontent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.10" />

</LinearLayout>

(3)文件监听器源码:

      1)扩展的Fileobserver,实现文件或者文件夹的监听   

package com.liuzuyi.fileobserver;

import android.os.FileObserver;
import android.util.Log;

public class SDCardListener extends FileObserver {

	public SDCardListener(String path) {
	    super(path);
	}
	public void onEvent(int event, String path) {
		switch (event) {
		case FileObserver.CREATE :
			Log.d("creat", "filename"+path);	
			break;
		case FileObserver.ALL_EVENTS :
			Log.d("all", "filename"+path);	
			break;
		}	
	}

}   

       2)主程序代码

package com.liuzuyi.fileobserver;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	 private EditText filename;
	 private EditText content;
	 private TextView textcontent;
	 private static final String TAG ="simplefile"; 
	 SDCardListener myfileListener = new SDCardListener("/sdcard");
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		filename =(EditText)findViewById(R.id.filename);
		content =(EditText)findViewById(R.id.content);
		textcontent =(TextView)findViewById(R.id.textcontent);
		Button savebutton =(Button)this.findViewById(R.id.savebutton);
		Button viewbutton =(Button)this.findViewById(R.id.readbutton);
		savebutton.setOnClickListener(listener);
		viewbutton.setOnClickListener(listener);
			 
	}
	public void onResume()
	{
	  super.onResume();
	  myfileListener.startWatching();		
	}
	public void onPause()
	{
		 super.onPause();
		 myfileListener.stopWatching();
	}
	private View.OnClickListener listener = new OnClickListener() {
		public void onClick(View v) {
			Button button =(Button)v;
			String namestr =filename.getText().toString().trim();
			String contentStr =content.getText().toString();
			switch ( button.getId() ) {
			case R.id.savebutton:
				 String res ="success";
				 try {
					 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
					   {
						FileOutputStream outstream = new FileOutputStream("/sdcard/"+namestr+".txt");
						outstream.write(contentStr.getBytes() );
						outstream.close();
					   }
					  else return ;
						 
					
				} catch (Exception e) {
					 res= "failure";
					 e.printStackTrace();
				}
				 Toast.makeText(MainActivity.this,  res ,Toast.LENGTH_LONG).show();
					Log.i(TAG, namestr);
					Log.i(TAG, contentStr);
					break;
				case R.id.readbutton:
					String resid_v ="success";
				String contentst = null;
					try {
						if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
						  {
							File SDCardDir=Environment.getExternalStorageDirectory();
							File saveFile = new File(SDCardDir,namestr+".txt");
							FileInputStream instream = new FileInputStream(saveFile);
							ByteArrayOutputStream Ostream = new ByteArrayOutputStream();
							
							byte[] buffer = new byte[1024];
							int len = -1;
							  while( (len = instream.read(buffer)) != -1 )
							    {
								  Ostream.write(buffer,0,len);
								  }
							  contentst = Ostream.toString();
							  Ostream.close();
							  instream.close(); 
						  }
						else
						{
							Toast.makeText(MainActivity.this, "SD卡不存在", Toast.LENGTH_LONG).show();
						}
					
					} catch (Exception e) {
						 resid_v ="faile";
						 e.printStackTrace();
						
					}
					textcontent.setText( contentst);
					Log.i(TAG, contentst);
					Toast.makeText(MainActivity.this, resid_v,Toast.LENGTH_LONG).show();
					Log.i(TAG,namestr);
					break;
			}
		}
	}; 
}


     

android 文件监听器,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!