2013-03-31 74 views
0

我一直在搜索這個網站很長一段時間,現在試圖找到這個答案,但我無法得到它。Android:包含文件的空資產文件夾

我想要得到的是資產文件夾中的文件列表。這是因爲我想要一種聰明的方式來加載這些文件並在不同的屏幕中使用它們,而無需爲該文件夾中的每個文件編寫一個serparate活動。這是我目前使用的代碼。

File file = new File("file:///android_asset/Peacefulpack.txt"); 
Log.e("Test", file.getName()); 

File folder = new File("file:///android_asset"); 
for(int i = 0; i < folder.listFiles().length; i++) 
{ 
    Log.e("Test", folder.listFiles()[i].getName()); 
} 

帶文件的代碼的頂部部分工作得很好,但帶有文件夾的部分沒有。奇怪的是,folder.listFiles()返回null,但它應該只在目錄中沒有文件或子文件夾時(至少據我所知)這樣做。但是,由於我在那裏訪問了一個文件夾,因此文件夾中有文件。

爲什麼這給了我一個空指針?

回答

1

試試這個:

String folder = "/"; 
AssetManager am = getResources().getAssets(); 
String fileList[] = am.list(folder); 
for(int i = 0; i < fileList.length; i++) 
{ 
    Log.e("Test", fileList[i]); 
} 
+0

'AssetManager.list()'接受'String',而不是一個'File'。事實上,如果它有效,它依賴於'File'如何覆蓋'toString()'。這不是很好的設計。另外,我不確定'String'是否有像你所建議的那樣的'getName()'方法。 – jedwards

+1

suree ....對不起..看編輯:) – JackTurky

+1

是的,看起來不錯 – jedwards

1

我總是寫你正在試圖做

File folder = new File("file:///android_asset"); 
for(int i = 0; i < folder.listFiles().length; i++) 
{ 
    Log.e("Test", folder.listFiles()[i].getName()); 
} 

使用的AssetManager什麼。

例如

AssetManager mgr = App.getContext().getAssetManager(); 
String[] listing = mgr.list("") 
for(int i=0; i<listing.length; i++) 
{ 
    Log.e("Test", listing[i]); 
} 
相關問題