这个总结记得之前发了一次,今天突然找不到了,不知道是不是账号弄错了,很是着急,幸亏之前的保存还在,今天重新发一次,希望不要再找不到了。
安卓文件操作涉及的可以分为三类:
1. SharedPreferences共享文件操作
2. 安卓内部文件存储操作
3. 外部存储操作(SD卡)
4. 数据库存储操作
本文主要总结一下安卓内部和外部(SD卡)不包括数据库的操作过程和使用的方法和他们之间的区别和联系。
内部存储:
在内部存储中创建并写入一个私有文件:
调用openFileOutput(),传入文件名和操作模式。方法返回一个FileOutputStream对象。
使用write()写文件。
使用close()关闭文件流。
例如:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
MODE_PRIVATE创建文件(或以同名文件替换),并为你的应用所私有。其他可用的模式有:MODE_APPEND, MODE_WORLD_READABLE, 和MODE_WORLD_WRITEABLE。
从内部存储中读一个文件:
调用openFileInput(),并传递需要读取的文件的名称。这个方法返回一个FileInputStream。
使用read()从文件中读取数据。
使用close()关闭文件流
其他有用的方法
取得内部文件在文件系统中保存位置的绝对路径。
创建(或者打开已存在的)内部存储空间所在的目录。
deleteFile()
删除内部存储的一个文件。
fileList()
返回当前由你的应用保存的文件的列表。
上述内部存储的方法都是直接访问安卓系统中” data/data/应用的包名/ ”这个路径下的目录,不需要我们设置目录的参数。这个系统路径也会随着软件的生命周期而存在和消失,软件卸载则消失。
注意:最重要的就是这些方法是安卓(Content类)提供的访问此处文件不需要提供目录参数。
外部存储:
外部存储有两类方法一类是安卓Environment类中的方法,这个类的方法一般操作的是SD的公共目录,在这个公共目录的文件是一直存在不会随着软件的变化而消失。但是注意的是:有一些方法Content类的方法,虽然也是操作SD卡的数据,但是这些数据也是某个应用私有的,随着应用产生,随着应用卸载就消失。
Environment类中的访问公共路径不会随着软件卸载而消失的方法:(路径: storge/sdcard/各个类别的目录)
getExternalStoragePublicDirectory();
getExternalStorageDirectory();
getDownloadCacheDirectory();这个方法的缓存数据存在了SD卡的根目录下的cache缓存目录下。
Content类的存在外部存储但是会随着使用这些方法的应用的卸载而消失的方法(路径:stprage/sdcard/Android/应用的包名/files/各个类别的目录):
getExternalFilesDir();
getExternalCacheDir();
说明:其实上面说过的安卓内部存储的方法如:
getCacheDir()
getFilesDir()
getDir()
deleteFile()
fileList()
也是Content类的方法,但是虽然是同一个类的方法却又不同的访问路径的属性,重要的也就是要区别这些方法的不同用途。
目的:
根据这些文件存储的特点我们要根据数据的不同用途保存在不同的位置。从而容易管理数据。方便清理。