1.文件存储,将文件存储在手机自带的内存中
示例:
/**
* 保存文件
* @param name 文件名
* @param content 文件内容
*/
public void save(String name, String content) throws Exception{
Log.d(TAG,"cache path :" + context.getCacheDir().getAbsolutePath());//获得缓存的dir
Log.d(TAG,"file dir path :" + context.getFilesDir().getAbsolutePath());//获得当前文件的dir
FileOutputStream fos = context.openFileOutput(name, Context.MODE_PRIVATE);
fos.write(content.getBytes());
fos.close();
}
android中将文件存储在手机自带的内存中,有四种操作模式:
a.私有操作模式:Context.MODE_PRIVATE,采用此种操作模式创建的文件,有2个特性,此文件以覆盖的方式新建文件,而且创建的文件只能让当前应用程序访问,其他应用程序不能访问
b.追加操作模式:Context.MODE_APPEND,采用这种方式创建的文件,只能让当前应用程序访问,采用追加的方式写文件
c.可读操作模式:Context.MODE_WORLD_READABLE,所有应用程序都能访问,但只能读,不能写
d.可写操作模式:Context.MODE_WORLD_WRITEABLE,所有应用程序都可写,但不能读出数据
另外,如果想让其他所有的应用程序即可读,也可写,可以直接将操作模式相加,例如:Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE
2.将文件存储在sdcard中
示例:
/**
* 保存文件
* @param name 文件名
* @param content 文件内容
*/
public void saveToSDCard(String name, String content) throws Exception{
//尽量不要直接写/mnt/sdcard, 因为1.5,1.6之前的版本不是这个路径,而是/sdcard路径
/*File file = new File("/mnt/sdcard/hello1/");
if(!file.exists()){
file.mkdirs();
}*/
//通过这个api可以获得存储设备的路径
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
file = new File(file.getAbsolutePath() + "/" + name);
FileOutputStream fos = new FileOutputStream(file);
fos.write(content.getBytes());
fos.close();
}
另外在往外部存储设备存储数据之前,必须先判断此手机是否支持将数据存储到外部设备:
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//可存储
//这个文件能被任何应用程序访问
f.saveToSDCard("helo.txt", "save to sdcard :hello, world");
}else if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY)){
//仅仅可读
Log.d("log", "磁盘写保护!!!");
}
而且,如果需要将数据存储到外部存储,需要在manifest.xml文件中声明相应的权限:
<!-- 挂在文件系统 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 向sdcard写入数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />