2017-07-02 64 views
0

嘗試了一段時間弄清這一點我自己後,它的時間來問你:社會!我確信解決方案應該放在另一篇文章的某個地方,但我根本找不到它(或將它應用到我的代碼中)。的Android/Java的:內容的原始文件夾中的文件名數組

我要實現以下目標:當啓動我的Android應用程序,我想打電話給其做的方法如下:

閱讀所有文件名中的「資源/原材料」目錄中,我已經儲存了多jpegs,並將這些文件的名稱存儲到數組中。

我想這應該不是太難回答了,但我根本就不能由我自己看着辦吧。我查看了listFiles()命令,我想這是要走的路,但我無法得到它的工作。在這裏你會發現我的一段代碼和相關的行:

public class Example{ 
     File[] imageNames; 
     public void onCreate(){ 
       scanFolder(); 
       useTheDataFromScanFolder(); 
     } 

     public void scanFolder(){ 
       int numberOfFiles = new File("res\raw").listFiles().length; 
       imageNames = new File("res\raw").listFiles(); 
     } 

     useTheDataFromScanFolder(){ 
       //here I want to use numberOfFiles and the array imageId 
     } 
} 

我希望你能解決我的問題,或者把我推向正確的方向!提前致謝!!

編輯: 感謝CommonsWare我設法解決我的問題,我設法得到它與下面的代碼工作(圖片現在存儲在/資產/資源/):

String [] fileList;  

public void onCreate(Bundle savedInstanceState) { 
    listAssetFiles("resources"); 
} 

public boolean listAssetFiles(String path) { 
    try { 
     fileList = getAssets().list(path); 
    } catch (IOException e) { 
     return false; 
    } 
    return true; 
} 
+1

你不能在你的項目結構類似這樣的程序讀取文件夾。在apk上,所有這些都是資源,而不是文件夾等文件系統中的文件... – Opiatefuchs

回答

3

讀取「res/raw」目錄中的所有文件名稱

Android設備上沒有res/raw/目錄。開發計算機上的Android應用程序項目中可能有res/raw/目錄。資源不是設備上的文件,而是APK文件中的條目。因此,沒有文件名。

更簡單的解決辦法是把這些東西搬到assets/。然後你可以使用AssetManagerlist()要收回這些資產的名稱,並使用open()得到一個InputStream一個。雖然資產不是設備上的文件,但AssetManager API更像文件。

如果你要堅持原始資源,你將需要使用Java反射來遍歷上R.raw定義爲找到自己的資源ID的所有static字段,然後使用openRawResource()一個Resources()對象上得到InputStream

+0

謝謝,我設法解決我的問題,因爲你可以在我的編輯中看到。你有任何提示簡化代碼? – daan166

+0

@ daan166:不是特別的,因爲沒有太多簡化的代碼。 – CommonsWare

相關問題