当前位置:编程学习 > JAVA >>

FileObserver监听文件示例

mainActivity如下:
 
[java]   
package c.c;  
import java.io.File;  
import android.os.Bundle;  
import android.os.Environment;  
import android.os.FileObserver;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.TextView;  
import android.app.Activity;  
/** 
 * 利用FileObserver监听SD卡的文件变化 
 * 如文件的建立和删除 
 * 注意FileObserver是另外的一个线程 
 * 所以在其中改变View是不可行的 
 * 
 */  
public class MainActivity extends Activity {  
    private Button mStartButton;  
    private Button mAddButton;  
    private Button mDeleteButton;  
    private TextView mTextView;  
    private String mSDCardPath;  
    private String mFilePath;  
    private File mFile;  
    private SDCardFileObserver mFileObserver;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        init();  
    }  
    private void init(){  
        mStartButton=(Button) findViewById(R.id.start_Button);  
        mStartButton.setOnClickListener(new OnClickListenerImpl());  
        mAddButton=(Button) findViewById(R.id.add_Button);  
        mAddButton.setOnClickListener(new OnClickListenerImpl());  
        mDeleteButton=(Button) findViewById(R.id.delete_Button);  
        mDeleteButton.setOnClickListener(new OnClickListenerImpl());  
        mTextView=(TextView) findViewById(R.id.textView);  
        mSDCardPath=Environment.getExternalStorageDirectory().toString();  
    }  
  
    private class OnClickListenerImpl implements OnClickListener {  
        @Override  
        public void onClick(View v) {  
            if (v.getId()==R.id.start_Button) {  
                mFileObserver=new SDCardFileObserver(mSDCardPath);  
                mFileObserver.startWatching();  
                mTextView.setText("开始监听");  
            }  
            if (v.getId() == R.id.add_Button) {  
                try {  
                    mFilePath=mSDCardPath+File.separator+"test.txt";  
                    mFile=new File(mFilePath);  
                    if (!mFile.exists()) {  
                        mFile.createNewFile();  
                    }  
                    mTextView.setText("创建"+mFilePath);  
                } catch (Exception e) {  
                }  
            }  
            if (v.getId() == R.id.delete_Button) {  
                if (mFile!=null) {  
                    mFile.delete();  
                    mTextView.setText("删除"+mFilePath);  
                }  
            }  
        }  
    }  
      
    private class SDCardFileObserver extends FileObserver{  
        public SDCardFileObserver(String path) {  
            super(path);  
        }  
  
        @Override  
        public void onEvent(int event, String path) {  
            switch (event) {  
            case FileObserver.CREATE:  
                System.out.println("------->创建文件,"+path);  
                //the next code is not right  
                //mTextView.setText("创建,"+path);  
                break;  
            case FileObserver.DELETE:  
                System.out.println("------->删除文件,"+path);  
                //the next code is not right  
                //mTextView.setText("删除,"+path);  
                break;  
            default:  
                break;  
            }  
        }  
          
    }  
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        mFileObserver.stopWatching();  
    }  
}  
 
main.xml如下:
 
[html]  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    tools:context=".MainActivity" >  
  <
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,