虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > android 文件监听器

android 文件监听器
类别:Android编程   作者:码皇   来源:互联网   点击:

(1)程序说明 1)首先要添加文件创建,删除,和写入数据的权限 2)接着扩展fileobseerver,写SDk文件监听类。可以查看下文的文件监听器源码 3)如何启动文件监控?

(1)程序说明

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

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

3)如何启动文件监控?

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

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

(2)布局文件

(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;
    }
    }
    }
    ;
    }


相关热词搜索: 监听器 文件