| 知乎专栏 |
目录
遍历目录
AssetManager assetManager = MainApplication.getContext().getApplicationContext().getAssets();
try {
String[] filelists = assetManager.list("");
for (int i = 0; i < filelists.length; i++) {
Log.d(TAG, filelists[i]);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
复制 Assets 到指定目录
private synchronized boolean copyAssetsData() {
AssetManager assetManager = MainApplication.getContext().getApplicationContext().getAssets();
try {
List<String> files = List.of(assetManager.list(""));
for (String file : files) {
Log.d(TAG, "coping " + file);
String target = workspace.concat("/").concat(file);
InputStream in = null;
OutputStream out = null;
try {
Log.i(TAG, "copying asset files from [" + file + "] to [" + target + "]");
in = assetManager.open(file);
(new File(target)).createNewFile();
out = new FileOutputStream(target);
byte[] data = new byte[1024];
int length = -1;
while ((length = in.read(data)) != -1) {
out.write(data, 0, length);
}
out.flush();
} catch (Exception e) {
Log.e(TAG, "skip asset files from [" + file + "] to [" + target + "]", e);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
Log.e(TAG, "" + e);
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
Log.e(TAG, "", e);
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
return false;
}
Log.d(TAG, "Copy assets files");
return true;
}
Log.d(TAG, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString());
Log.d(TAG, getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString());
/storage/emulated/0/Pictures
/storage/emulated/0/Android/data/cn.netkiller.album.education/files/Pictures
公共存储目录不会因为APP卸载而删除
Environment.getExternalStorageDirectory(): /storage/emulated/0
Environment.getExternalStoragePublicDirectory(""): /storage/emulated/0
Environment.getExternalStoragePublicDirectory("test"): /storage/emulated/0/test
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES): /storage/emulated/0/Pictures
Environment.getDataDirectory(): /data
Context.getCacheDir(): /data/data/cn.netkiller.test/cache
Context.getFilesDir(): /data/data/cn.netkiller.test/files
Context.getFileStreamPath(""): /data/data/cn.netkiller.test/files
Context.getFileStreamPath("test"): /data/data/cn.netkiller.test/files/test
Environment.getExternalStorageDirectory(): /storage/emulated/0
Context.getExternalCacheDir(): /storage/emulated/0/Android/data/cn.netkiller.test/cache
Context.getExternalFilesDir(""): /storage/emulated/0/Android/data/cn.netkiller.test/files
Context.getExternalFilesDir(null): /storage/emulated/0/Android/data/cn.netkiller.test/files
Context.getExternalFilesDir("test"): /storage/emulated/0/Android/data/cn.netkiller.test/files/test
Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES): /storage/emulated/0/Android/data/cn.netkiller.test/files/Pictures
public static String DIRECTORY_MUSIC = "Music"; public static String DIRECTORY_ALARMS = "Alarms"; public static String DIRECTORY_NOTIFICATIONS = "Notifications"; public static String DIRECTORY_PICTURES = "Pictures"; public static String DIRECTORY_MOVIES = "Movies"; public static String DIRECTORY_DOWNLOADS = "Download"; public static String DIRECTORY_DCIM = "DCIM"; public static String DIRECTORY_DOCUMENTS = "Documents";