Android中读写文件(转)
android中读写文件分两部分。?
1.手机flash读写 这个属于app的独立权限,即每个app默认只能读写自己文件夹下的文件.默认路径为/data/data/your_project/files/?
2.sdcard读写 默认android系统对每个app都开放读写功能。默认路径为/mnt/sdcard/ 或者/sdcard/?
写外部存储即sdcard的权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>?
打开关闭sdcard的权限<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>?
1.手机flash读写相关API?
存储文件 :?
FileOutputStream outStream=this.openFileOutput("zhzhg.txt",Context.MODE_PRIVATE);?
outStream.write("文件的读写",getBytes());?
outStream.close();?
读取文件:?
FileInputStream inStream=this.getContext().openFileInput("zhzhg.txt");?
----------------------------------?
使用绝对路径打开文件:?
File file = new File("/data/data/cn.zhzhg.action/files/zhzhg.txt");?
FileInputStream inStream = new FileInputStream(file);?
Log.i("FileTest", readInStream(inStream));?
注意:上面文件路径中的“cn.zhzhg.action”为应用所在包,当你在编写代码时应替换为你自己应用使用的包。?
----------------------------------?
读取文件的方:?
public static String readInStream(FileInputStream inStream){?
? try {?
?? ByteArrayOutputStream outStream = new ByteArrayOutputStream();?
?? byte[] buffer = new byte[1024];?
?? int length = -1;?
?? while((length = inStream.read(buffer)) != -1 ){?
??? outStream.write(buffer, 0, length);?
?? }?
?? outStream.close();?
?? inStream.close();?
?? return outStream.toString();?
? } catch (IOException e){?
?? Log.i("FileTest", e.getMessage());?
? }?
? return null;?
}?
Activity还提供了getCacheDir()和getFilesDir()方法:?
getCacheDir()方法用于获取/data/data/<package name>/cache目录?
getFilesDir()方法用于获取/data/data/<package name>/files目录?
2.sdcard读写相关API?
获取SDCard的状态:Environment.getExtemalStorageState()?
? EnvironmentMEDIA_MOUNTED手机 装有SDCard,并且可以进行读写?
获取SDCard的目录:Environment.getExtemalStorageDirectory()?
???? File saveFile=new File("/sdcard/zhzhg.txt");?
??????? 或:File sdCardDir=new File("/sdcard");//获取SD卡目录?
???? File saveFile-new File(sdCardDir,"zhzhg.txt");?
??????? FileOutputStream outStream = new FileOutputStream(saveFile);?
outStream.write("文件的读写".getBytes());?
outStream.close();?
sdcard文件详细操作 http://zhuyonghui116.blog.hexun.com/56778119_d.html?
可以看出owner是system,你只要在sdcard_rw组的话就可以读写?
一般你的程序要写sd的话需要申请如下权限?
??? <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >?
??????? <group gid="sdcard_rw" />?
??? </permission>?
在sdcard中创建/删除文件的权限用android.permission.MOUNT_UNMOUNT_FILESYSTEMS?
往sdcard中写入数据权限为android.permission.WRITE_EXTERNAL_STORAGE?
gid好像可以不用写在xml中也可以。你申请者权限,执行的时候你就在相应的group中了。?
你看到的权限主要是限制system用户对sdcard的读写。?
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cocodehouse/archive/2010/10/29/5974288.aspx
