读书人

资料在SD卡存储

发布时间: 2012-09-20 09:36:50 作者: rapoo

文件在SD卡存储


手机的存储空间分俩种,一种是手机自带的,另一种是SD卡,(外存)


文件保存
FileOutputStream fOutputStream =
??context.openFileOutput(filename, Context.MODE_PRIVATE);
??fOutputStream.write(content.getBytes());
openFileOutput()方法的第一个参数用于指定文件名称,不能包含路径分隔符"/",如果文件不存在,Android会自动创建它,创建的文件保存在/data/data/<package name>files目录
openFileOutput()方法的第二个参数用于指定操作模式,有四种模式,分别为:
Context.MODE_PRIVATE=0
Context.MODE_APPEND =32768
Context.MODE_WORLD_READABLE=1
Context.MODE_WORLD_WRITEABLE=2

文件读取
public String readFile(String filename)throws Exception{
??FileInputStream input = context.openFileInput(filename);
??
??//定义的缓冲区
??byte[] bytes = new byte[1024];
??int len = 0;
??//写入文件到内存
??ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
??
??while((len=input.read(bytes))!=-1){
???//把缓冲区中 的数据从0位置开始,读取len长度,写入内存
???outputStream.write(bytes,0,len);
??}
??
??byte[] data? = outputStream.toByteArray();
??outputStream.close();
??input.close();
??return new String(data);
?}

?

文件操作模式
Context.MODE_PRIVATE,为默认操作模式,代表文件是私有数据,只能被应用本身访问,在改模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否具有权限读写该文件。
MOED_WORLD_READABLE:表示当前文件可以被其他应用读取
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入


快速定位文件,在activity中使用this.getFilesDir()


文件在SD卡存储
android2.2之前,SD卡在/sdcard目录
android2.2和之后,SD卡在/mnt/sdcard

使用activity的openFileOutput()方法保存文件,文件是存在手机空间上,一般手机的存储空间不是很大,存放些小文件还可以,如果要存储视频等大文件,是不可行的,对于像视频这样的大文件,我们存储在SD卡

在程序中访问SD卡,需要加入权限
<!--在SD卡中创建于删除文件的权限-->
<android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!--往SD卡中写入数据权限-->
<android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

//判断是否存在SD卡,是否可写
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
?//保存
?fileService.saveToSDCard(filenameString, context);
}

public void saveToSDCard(String filename,String content)throws Exception{
??File file = new File(Environment.getExternalStorageDirectory(),filename);
??FileOutputStream fOutputStream =
?????new FileOutputStream(file);
??fOutputStream.write(content.getBytes());
??fOutputStream.close();
}

读书人网 >移动开发

热点推荐