android 文件监听器

(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

时间: 2024-10-20 04:02:25

android 文件监听器的相关文章

Android文件监控FileObserver介绍

在前面的Linux文件系统Inotify机制中介绍了Linux对文件变更监控过程.Android系统在此基础上封装了一个FileObserver类来方便使用Inotify机制.FileObserver是一个抽象类,需要定义子类实现该类的onEvent抽象方法,当被监控的文件或者目录发生变更事件时,将回调FileObserver的onEvent()函数来处理文件或目录的变更事件. 事件监控过程 在FileObserver类中定义了一个静态内部类ObserverThread,该线程类才是真正实现文件

Android开发进阶:如何读写Android文件

Android主要有四大主要组件组成:Activity.ContentProvider.Service.Intent组成.Android文件的运行主要需要读写四大组件的文件.本文将介绍如何读写Android文件,希望对正在进行Android开发的朋友有所帮助. 文件存放位置 在Android中文件的I/O是存放在/data/data/<package name>/file/filename目录下. 提示:Android是基于linux系统的,在linux的文件系统中不存在类似于Windows的

关于Android文件Apk下载的那点事

1.Android文件Apk下载变ZIP压缩包解决方案 如果你的下载服务器为Nginx服务器,那么,在Nginx安装目录下的conf/mime.types文件的对应位置,加上以下一行语句,指定APK文件的MIME类型为 application/vnd.android.package-archive 即可: [html] view plaincopy application/vnd.android.package-archive     apk; 如果是java-web服务器 只需要修改web.x

Android 文件夹命名规范 国际化资源

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

发现一个好用的Android文件访问工具--es文件管理器,可以在同局域网下的浏览器中查看手机中的文件

如题,发现一个好用的Android文件访问工具--es文件管理器,可以在同局域网下的浏览器中查看手机中的文件 1.在手机上打开es文件管理器的远程管理器,如图:                   2.保证手机和电脑在同一个局域网下(有线或者Wifi都可以) 贴一下我的地址: (1)我电脑的IP地址(有线宽带连接): (2)手机的地址(Wifi): 3.在别的手机或者电脑上打开上面的Url(我的是:ftp://192.168.1.115:3721/),打开后就是这样的: 3. 看一下刚才在手机上

Android 文件的存储和加载

Android 文件的存储和加载,主要用于请求网络中json文件的缓存,引入了一个简单的过期时间,供大家参考学习! 文件存储 1 private void saveLocal(String json, int index) { 2 3 BufferedWriter bw = null; 4 try { 5 File dir=FileUtils.getCacheDir(); 6 //在第一行写一个过期时间 7 File file = new File(dir, getKey()+"_"

Android 文件读写高级

往设备里写文件有几种选择,写在内存中,或SD卡中. 往内存里写好处是,可以写在 data/data/包名 文件夹里,而此文件是不可访问的(除非 root).这样可以增加文件的安全性,避免被误删.缺点也显而易见,如果文件太大,会占用手机内存.另外写在此包里的文件,删除app的时候会自动删除. 写在SD卡中如果怕被误删,可以设置为隐藏,即在文件夹名前加 " ." ,如 ".test".这样非 root 用户就看不见此文件夹了. Environment.getExtern

Android——文件的保存和读取

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中.可以使用Context.MODE_APPEND Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件. Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件. MODE_WOR

二十四、Android文件的读写

Android的文件读写与JavaSE的文件读写相同,都是使用IO流.而且Android使用的正是JavaSE的IO流,下面我们通过一个练习来学习Android的文件读写. 1.创建一个Android工程 [html] view plaincopy Project name:File BuildTarget:Android2.2 Application name:文件读写 Package name:test.file Create Activity:DateActivity Min SDK Ve