在 Android 中打开资源时出现 java.io.FileNotFoundException

标签 java android

资源文件夹中存在 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)

最佳答案

将下面的行替换为

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;
}

关于在 Android 中打开资源时出现 java.io.FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43185305/

相关文章:

java - 检查数组的每个元素是否属于一组值

android - android pie 上的 Retrofit2 响应为空

android - 使中间元素卡在标题中(ScrollView/ListView)

android - 将已发布的应用程序 API 从 1.6 升级到 2.1?

android - 使用 ViewPager 检测滑动并自动切换

需要 Java OCR 帮助

java - 无法使用 iText 写入 pdf

java - org.jboss.resteasy.spi.UnhandledException : javax. persistence.PersistenceException:无法构建实体管理器工厂

Java 原始声明

android - 如何知道 Firebase 中查询返回的项目数