FileObserver监听文件示例(一)

2014-11-24 11:30:27 · 作者: · 浏览: 11
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
prot