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 ,
上一个:关于org.hibernate.ObjectNotFoundException: No row with the given identifier exist
下一个:HttpClient的简单封装,静态调用,自动识别网页字符集,伪装火狐/IE浏览器
- 更多JAVA疑问解答:
- java怎么在线读取ftp服务器上的文件内容
- 关于程序员的职业规划
- HTML和JSP矛盾吗?
- java小程序如何打包?
- java怎么split路径文件名?
- jsp+javaBean中Column 'ordersPrice' specified twice的错误
- Java TCP/IP Socket网络编程系列
- 大家来讨论一下我到底该用什么好?Swing 还是 JavaFX
- 关于Hibernate实体自身多对一的抓取问题
- 关于apache2+tomcat群集出现的问题
- spring 获取上下文问题
- SSH 导入导出excel 谁有这块的资料吗?
- Ext TreePanel 刷新问题
- springmvc 加载一个jsp页面执行多个方法 报404
- checkbox数组action怎么向页面传值