android 文件读写
文件级别
- MODE_PRIVATE
- MODE_WORLD_READABLE
- MODE_WORLD_WRITEABLE
内部存储
- 获取文件输出流
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE)
- 获取文件输入流
FileInputStream fis = openFileInput(FILENAME, Context.MODE_PRIVATE);
- getFileDir(): 获取内部存储绝对路径
- getDir(): 创建或打开内部储存目录
- deleteFile(): 删除内部存储文件
- filelist(): 获取文件夹下文件列表
- 使用缓存文件:
public File getTempFile(Context context, String url) {
File file;
try {
String fileName = Uri.parse(url).getLastPathSegment();
file = File.createTempFile(fileName, null, context.getCacheDir());
}
catch (IOException e) {
}
return file;
}
外部存储
- getExternalStoragePublicDirectory(): 获取外部存储目录
public:不会随着创建它的 app 卸载而删除
public File getAlbumStorageDir(String albumName) {
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), albumName);
if (!file.mkdirs()) {
Log.e(LOG_TAG, "Directory not created");
}
return file;
}
- getExternalFilesDir(): 获取外部存储目录
private:随着创建它的 app 卸载而删除
public File getAlbumStorageDir(Context context, String albumName) {
File file = new File(context.getExternalFilesDir(
Environment.DIRECTORY_PICTURES), albumName);
if (!file.mkdirs()) {
Log.e(LOG_TAG, "Directory not created");
}
return file;
}
文件访问权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
检查外部存储状态
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}