数据的存储有多种方式,比如数据库存储、SharedPreferences存储、文件存储等;
这里我们将要介绍最简单的文件存储方式;
文件存储简单的来说就是一般的JAVASE中的IO流,只是把他应用于Android手机中而已;
文件存储
(1)FileOutputStream out = context.openFileOutput(String filename,int mode); 以mode模式获得文件输出流
(2)out.write(byte[]b);
注意:文件默认会存储到/data/data/package/files中;
文件读取
(1)FileInputStream in = context.openFileInput(String filename); 获得某个文件的文件流
(2)int length = in.read(byte[]);
注意:默认会读取/data/data/package/files的文件;
1.Context.MODE_PRIVATE:私有覆盖模式 - rw- rw- ---
只能被当前应用访问,并且如果写入,则覆盖;
2.Context.MODE_APPEND:私有追加模式 - rw- rw- ---
只能被当前应用访问,并且如果写入,则追加;
3.Context,MODE_WORLD_READABLE:公有只读模式 - rw- rw- r--
可以被其他应用读取;
4.Context.MODE_WORLD_WRITEABLE:公有可写模式 - rw- rw- -w-
可以被其他应用写入,但不能读取;
注意,如果希望其他使得文件模式叠加,则可以使用加号连接;
比如:Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE 表示其他应用读写;
目标:当点击保存时,将以特定的文件名称和特定的文件内容保存内容,点击读取时,将读取特定的文件的文件内容显示到文件内容文本框;
当点击保存之后,效果如下:
MainActivity.java
如果一个文件很大,则不适用于存放在手机的存储中;
如果手机存在sdcard,则sdcard的目录为/mnt/sdcard目录;
此时模拟器已经支持sdcard了;
在AndroidManifest.xml中设置:
存储到sdcard核心代码:
读取sdcard核心代码:
其实主要就是存储目录问题;
在Android中1.5、1.6的sdcard目录为/sdcard,而Android2.0以上都是/mnt/sdcard,因此如果我们在保存时直接写具体目录会不妥,因此我们可以使用:
Environment.getExternalStorageDirectory();获取sdcard目录;
(1)不能纯粹使用sdcard保存法,因为如果不能判定一部手机是否存在sdcard,如果没有,则需要提供其他解决方法,比如
保存到手机存储;
提示不存在sdcard;
可以使用: