android文件操作

一、读文件操作

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");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章