Android数据存储之文件存储

一、存储在手机内存里,即/data/data/<package name>/files下面,例如/data/data/com.lhp.controlPad/a.txt。代码如下

public void save(){
try{
FileOutputStream outStream=openFileOutput("a.txt",Context.MODE_APPEND);
outStream.write(text.getText().toString().getBytes());
outStream.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}

penFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。openFileOutput()方法的第二个参数用于指定操作模式,共有四种,分别为:

Context.MODE_PRIVATE:默认的操作模式,代表文件是私有数据,只能被本应用程序访问。在该模式下,写入的内容会覆盖原来的内容,如果想把写入的文件追加到原文件的末尾,用Context.MODE_APPEND模式。

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

Context.MODE_WORLD_READABLE:

Context.MODE_WORLD_WRITABLE:控制其他应用程序是否有权限读写该文件。


读取文件内容:

public void read(){
try{
FileInputStream inStream=openFileInput("a.txt");
byte[] buffer=new byte[1024];
inStream.read(buffer);
inStream.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}


二、把文件放入SD卡

当文件比较大的时候我们一般存放在SDcard上,在程序中访问sd卡,首先需要获得相应的权限,

在AndroidManifest.xml文件中加入访问sd卡的权限如下:

<!--在SDCard中创建和删除文件的权限-->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!--往SDCard中写入数据权限-->

<uses-permission android:name="android:permission.WRITE_EXTERNAL_STORAGE"/>

要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

         File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录

         File saveFile = new File(sdCardDir, “a.txt”);

       FileOutputStream outStream = new FileOutputStream(saveFile);

         outStream.write("test".getBytes());

         outStream.close();

}

Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。

Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:

File sdCardDir = new File("/sdcard"); //获取SDCard目录

File saveFile = new File(sdCardDir, "itcast.txt"); 

//上面两句代码可以合成一句: File saveFile = new File("/sdcard/a.txt");

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("test".getBytes());

outStream.close();



发布了22 篇原创文章 · 获赞 4 · 访问量 12万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章