一、读文件操作
Context.openFileInput(Stringname)打开一个与应用程序联系的私有文件输入流。
当文件不存在时抛出FileNotFoundException
FileInputStreamin = this.openFileInput("test.txt");//打开文件"text.txt"
…
In.close();//关闭输入流
二、写文件操作
Context.openFileOutput(Stringname,int mode)开启一个与应用程序联系的私有文件输出流
当文件不存在时该文件将被创建,文件输出流可以在添加模式中打开,这意味着新的数据将被添加到文件的末尾。
FileOutputStream out =this.openFileOutput("test2.txt,MODE_APPEND");
//打开文件"test2.txt"进行写操作,使用MODE_APPEND再添加模式中打开文件
…
out.close();//关闭输出流
eg:publicclass FileActivity extends Activity{
@Override
Public void onCreate(Bundle savedInstanceState){
FileOutputStream outStream= this.openFileOutput("lxt008.txt",Context.MODE_PRIVATE);
outStream.write("lxt008".getBytes());
outStream.close();
}
}
注意:
openFileOutput()方法的第一参数用于指定文件名,不能包含路径分隔符“/”,如果文件不存在,Android会自动创建他,创建的文件保存在/data/data/<packagename>/files目录,
如:/data/data/com.lxt008/files/lxt008.txt,通过点击Eclipse菜单“Window”-“ShowView”-“Other”,在对话窗口 中展开android文件夹,选择下面的File Explorer视图,然后再File Explorer 视图中展开/data/data/<packagename>/files目录就可以看到该文件夹。
三、读取静态文件
要打开打包在程序中的静态文件,使用Resource.openRawResource(R.raw.mydatafile);
该文件必须放在文件夹res/raw/中
InputStreamin =this.getResources().openRawResource(R.raw.my);
…//获得Context资源
In.close();//关闭输入流
eg:如果想打开/data/data/<packagename>/file目录应用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStreaminStream = this.getContext().openFileInput("lxt008.txt");
Log.i("FileTest",readInstream(inStream));
或者直接使用文件的绝度路径:
File file =new File("/data/data/com.lxt008/files/lxt008.txt");
FileInputStreaminStream = new FileInputStream(file);
Log.i("FileTest",readInStream(inStream));
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录
getFilesDir()方法用于获取/data/data/<package name>/files目录
以上的操作是对于安卓手机自带内存空间上的。对于存储空间不大的手机,你需要将大文件存放于手机内存卡上面:
应用程序访问SDCard时,你需要申请访问权限:
<!--在SDCard中创建与删除的文件权限-->
<uses-premissionandroid:name="android.prremission.MOUNT_UNMOUNT_FILESYSTEMS">
<!--往SDCard写如数据权限-->
<uses-premissionandroid:name="android.premission.WRITE_EXTERNAL_STORAGE">
要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。
If(Environment.getExternalStorageState().equals(Environment.MEDLA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
File savaFile = new File(sdCardDir,"lxt008.txt");
FileOutputStream outStream = new FileOutputStream(savaFile);
outStream.write("lxt008".getBytes());
outStream.close();
}
获取SdCard目录也可以这样:
File sdCardDir = new File("/sdcard");//获取SDCard目录
File savaFile = newFile(sdCardDir,"lxt008.txt");
上面两句可以合成一句:
FilesavaFile = new File("/sdcard/lxt008.txt");