答案 0 :(得分:2)
试试这个,
private void copyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", e.getMessage());
}
for(String filename : files) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
out = new FileOutputStream("/sdcard/" + filename);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch(Exception e) {
Log.e("tag", e.getMessage());
}
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}
不要忘记在最明显的
中添加此权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:0)
所以我需要做一些类似的事情,除了所有文件,并在启动时为AOSP包。如果有人感兴趣的话,这是包的链接(参见AssetCopyReceiver.java)。
这会将sdcard下的所有文件复制到各自的位置,它也应该与子目录一起使用。它作为启动接收器工作,不适用于常规应用程序,因此需要修改但代码是相同的。当我从那里开始时,它基于第一个答案,并纠正了我发现的一些问题,因为我需要扩展它。