Android 内部存储读写介绍
内部存储读写
内容介绍
Android系统允许应用程序创建仅能够自身访问的私有文件,文件保存在设备的内部存储器上,在Linux系统下的/data/data//files目录中
Android系统不仅支持标准Java的IO类和方法,还提供了能够简化读写流式文件过程的函数
openFileOutput()函数
openFileOutput()函数用于写入数据, 如果如果指定的文件不存在,则创建一个新的文件
public FileOutputStream openFileOutput(String name, int mode)
- 第1个参数是文件名称,这个参数不能包含描述
路径的斜杠 - 第2个参数是操作模式
- 函数的返回值是FileOutputStream类型
- Android系统支持四种文件操作模式
模式 | 说明 |
---|---|
MODE_PRIVATE | 私有模式, 缺陷模式, 文件仅能够被文件创建程序访问, 或具有相同UID的程序访问。 |
MODE_APPEND | 追加模式, 如果文件已经存在, 则在文件的结尾处添加新数据。 |
MODE_WORLD_READABLE | 全局读模式, 允许任何程序读取私有文件。 |
MODE_WORLD_WRITEABLE | 全局写模式, 允许任何程序写入私有文件。 |
为了提高文件系统的性能,一般调用write()函数时,如果写入的数据量较小,系统会把数据保存在数据缓冲区中,等数据量累积到一定程度时再一次性的写入文件中,在调用close()函数关闭文件前,务必要调用flush()函数,将缓冲区内所有的数据写入文件
openFileInput()函数
- openFileInput()函数用于打开一个与应用程序联系的
私有文件输入流 - 当文件不存在时抛出FileNotFoundException 异常
- openFileInput()函数的语法格式如下
public FileInputStream openFileInput (String name)
- 参数是文件名称,同样不允许包含描述路径的斜杠
代码demo
因为文件操作可能会遇到各种问题而最终导致操作失败,因此代码应该使用try/catch捕获可能产生的异常
写入文件
final private String FILE_NAME = "text.txt";
//定义名称
try {
FileOutputStream fos = openFileOutput(FILE_NAME,Context.MODE_PRIVATE);
//使用openFileOutput()函数以私有模式建立文件
String text = “demo”;
fos.write(text.getBytes());
//调用write()函数将数据写入文件
fos.flush();
//调用write()函数将数据写入文件
fos.close();
//调用close()函数关闭FileOutputStream
} catch (Exception e) {
Log.d("errMsg", e.toString());
}
读取文件
String FILE_NAME = "text.txt";
try {
//打开文件输入流
FileInputStream ios = openFileInput(FILE_NAME);
byte[] temp = new byte[1024];
StringBuilder sb = new StringBuilder("");
int len = 0;
//读取文件内容
while ((len = ios.read(temp)) > 0){
sb.append(new String(temp, 0, len));
}
//关闭输入流
ios.close();
String textContent = sb.toString();
}catch (Exception e) {
Log.d("errMsg", e.toString());
}