2014-10-06 78 views
0

我想打印,用於測試資產文件夾裏面兩個文件夾的內容。在資產文件夾裏面列出文件的異常

的文件夾組成:

資產

  • foo.txt的
  • foo1.txt

但該方案對我說,有沒有文件。

AssetManager assetManager = getAssets(); 
      String[] files = null; 
      try { 
       files = assetManager.list(""); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } 
      for (int i = 0; i < files.length; i++) { 
       File file = new File(files[i]); 
       try { 
        Scanner scanner = new Scanner(file); 
        while (scanner.hasNextLine()) { 
         Log.e(" ", " " + scanner.next()); 
        } 
        scanner.close(); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 
      } 

logcat的

10-06 19:38:16.328: W/System.err(12250): java.io.FileNotFoundException: /foo.txt: open failed: ENOENT (No such file or directory) 
10-06 19:38:16.335: W/System.err(12250): at libcore.io.IoBridge.open(IoBridge.java:416) 
10-06 19:38:16.335: W/System.err(12250): at java.io.FileInputStream.<init>(FileInputStream.java:78) 
10-06 19:38:16.343: W/System.err(12250): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory) 
10-06 19:38:16.351: W/System.err(12250): at libcore.io.Posix.open(Native Method) 
10-06 19:38:16.351: W/System.err(12250): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 

回答

1

您無法將文件類用於資產文件夾中的「文件」。這是因爲File只能處理文件系統上的真實文件。相反,唯一的選擇是調用資產管理器打開資產文件的輸入流並從該流中讀取。例子在這個論壇上多次發佈。

1

AssetManager.list給出是資產內的相對的路徑。如果您需要打開文件,則需要提供該文件的絕對路徑。對於資產文件,您可以使用AssetManager.open方法。

+0

當然,沒有所討論對象的「絕對路徑」,因爲當它到達設備時,它不再是一個文件。 – 2014-10-06 18:12:28

相關問題