1、android中文件的存储与读取
在android系统中提供文件数据存储的方法:openFileOutput(String name,int mode)
name为需要存储的文件名(如demo.txt)
mode为此文件的读写权限:
(1)MODE_PRIVATE:表示该文件只能被创建它的程序所调用。
(2)MODE_APPEND:表示新存入的数据添加在原来数据的后面。
(3)MODE_WORLD_READABLE:表示该文件的数据能够被所有的程序读取。
(4)MODE_WORLD_WRITEABLE:表示该文件的数据可以被所有的程序写入。
try{
String string=et01.getText().toString();//取得文本内容
byte[] buffer=string.getBytes();//将内容转化为字节数组
//创建文件输出流及文件 demo.txt
FileOutputStream fos=openFileOutput("demo.txt", MODE_PRIVATE);
fos.write(buffer);//将字节数组通过文件输出流存入 demo.txt 文件中
fos.close();//关闭文件输出流
}
catch(Exception e){
e.printStackTrace();
}
注:默认路径存放在/data/data/包名/files/,还可以存入自定义的内部存储路径下,如果需要存储到 sdcard 中。可以如下这么写:
String path=Environment.getDownloadCacheDirectory().getPath();//获取sdcard路径
File myfile01=new File(path+"/demo01.txt");
FileOutputStream fos=new FilePutputStream(myfile01);
//需要在AndroidMainfest.xml中加上sdcard的读写权限
/**
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission/ android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">
*/
在android中的文件读取方法:openFileInput(String name)
(默认路径)
try{
//取得文件,并将文件中的字节数组放入文件输入流中
FileInputStream fis=openFileInput("demo.txt");
//取得文件的大小
int length=fis.available();
byte[] buffer=new byte[length];//设置缓冲字节数组,与文件大小相同
fis.read(buffer);//将文件输入流中的字节数组放入缓冲字节数组
//以下两种方法是将缓冲字节数组转化为文本
//String queryresult=new String(buffer,"UTF-8");
String queryresult=EncodingUtils.getString(buffer, "UTF-8");
fis.close();
}catch(Exception e){
e.printStackTrace();
}
(其他位置)
//(1)读取 raw 资源文件夹下面的内容。
Resources myres=getResources();
InputStream is=myres.openRawResource(R.raw.demo01);
//(2)读取 Assets 文件夹下面的内容。
Resources myres=getResources();
InputStream is=myres.getAssets().open(filename);
//(3)读取 sdcard 文件夹下面的文件内容。
File file=new File("/sdcard/filename");
FileInputStream fis=new FileInputStream(file);
//(4)读取特定位置的文件。
File file=new File("/data/data/com.lyj.cn/filename");
FileInputStream fis=new FIleInputStream(file);