资产文件夹中有50多个PNG。层次结构:src - > main。
AssetManager assetManager = getApplicationContext().getAssets();
String[] files = null;
try {
files = assetManager.list("imgs");
} catch (IOException e) {
Log.e("tag", "Failed to get asset file list.", e);
}
if (files != null) for (String filename : files) {
InputStream in = null;
OutputStream out = null;
try {
File file = new File(filename);
in = assetManager.open(file.getPath());
out = new FileOutputStream(f);
copyFile(in, out);
} catch (IOException e) {
Log.e("tag", "Failed to copy asset file: " + filename, e);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
// NOOP
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
// NOOP
}
}
}
}
错误:
java.io.FileNotFoundException: 505-tumbleweed-ani.gif
at android.content.res.AssetManager.openAsset(Native Method)
at android.content.res.AssetManager.open(AssetManager.java:347)
at android.content.res.AssetManager.open(AssetManager.java:321)
at com.example.android.softkeyboard.ImePreferences.copyAssets(ImePreferences.java:172)
at com.example.android.softkeyboard.ImePreferences.onRequestPermissionsResult(ImePreferences.java:107)
at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7069)
at android.app.Activity.dispatchActivityResult(Activity.java:6921)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4049)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
答案 0 :(得分:1)
用
替换下面的行File file = new File(filename);
以下代码:
您需要在下面的行中添加文件路径
// load image
try {
// get input stream
InputStream inputstream= getAssets().open("imgs/"+filename);
// load image as Drawable
Drawable drawable = Drawable.createFromStream(inputstream, null);
// set image to ImageView
mImage.setImageDrawable(drawable );
}
catch(IOException ex) {
return;
}