内部存储
Android系统能够直接把文件存在设备的内部存储内。
默认情况下,保存在内部存储内的文件是应用程序私有的,其他应用程序(或用户)是无法访问的。
当用户卸载此应用程序时,内部存储的数据会一并清除。
- 往内部存储内写文件(写入到/data/data/com.xxx.xxx/files目录下,com.xxx.xxx为应用程序包名):
String FILE_NAME = "hello_file";
String FILE_TEXT = "hello world!!!";
FileOutputStream fos;
try {
fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
fos.write(FILE_TEXT.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
运行上面代码,发现/data/data/com.xxx.xxx/files目录下多了个hello_file文件。
- 读取内部存储内的文件(也就是从/data/data/com.xxx.xxx/files目录下读取文件)
String FILE_NAME = "hello_file"; byte[] b = new byte[1024]; StringBuffer sb = new StringBuffer(); FileInputStream fis; try { fis = openFileInput(FILE_NAME); int num; while ((num = fis.read(b)) != -1) { sb.append(new String(b, 0, num)); } fis.close(); Log.d("xxx", sb.toString()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
- 另外,介绍几个和内部存储相关的方法
//打印出/data/data/com.xxx.xxx/files
Log.d("xxx", getFilesDir().toString());
//打印出/data/data/com.xxx.xxx/app_hello_file
Log.d("xxx", getDir("hello_file", Context.MODE_PRIVATE).toString());
//返回应用程序内部存储(也就是/data/data/com.xxx.xxx/files目录下)当前保存文件列表
for (int i = 0; i < fileList().length; i++) {
Log.d("xxx", fileList()[i]);
}
//删除保存在内部存储上(也就是/data/data/com.xxx.xxx/files目录下)的文件
deleteFile("hello_file");