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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值