2017-04-03 675 views
0

资产文件夹中存在50多个PNG。层次结构:src - > main。在Android中打开资源时的java.io.FileNotFoundException

 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; 
} 
相关问题