[英]Android/Java: filenames of contents raw folder to array
在嘗試自己弄清楚了一段時間之后,該問您:社區! 我確定解決方案應該在另一篇文章的某個地方,但是我根本找不到(或將其應用於我的代碼)。
我想要實現以下目標:啟動我的android應用程序時,我想調用執行以下操作的方法:
讀取“ res / raw”目錄中的所有文件名,在該目錄中我存儲了幾個jpeg,並將這些文件的名稱存儲到數組中。
我想回答起來應該不會太困難,但是我自己無法弄清楚。 我已經研究過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,我設法解決了我的問題,我設法使它與以下代碼一起工作(圖片現在存儲在/ assets / resources /中):
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;
}
讀取“ res / raw”目錄中的所有文件名
Android設備上沒有res/raw/
目錄。 開發機器上的Android應用程序項目中可能有一個res/raw/
目錄。 資源不是設備上的文件,而是APK文件中的條目。 並且,因此,沒有文件名。
比較簡單的解決方案是將這些東西移至assets/
。 然后,您可以使用AssetManager
和list()
來檢索那些資產的名稱,並使用open()
來獲得一個InputStream
。 雖然資產也不是設備上的文件,但是AssetManager
API更加類似於文件。
如果要堅持使用原始資源,則需要使用Java反射來遍歷R.raw
上定義的所有static
字段以查找其資源ID,然后在Resources()
對象上使用openRawResource()
獲得InputStream
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.