簡體   English   中英

Android / Java:目錄原始目錄的文件名到數組

[英]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/ 然后,您可以使用AssetManagerlist()來檢索那些資產的名稱,並使用open()來獲得一個InputStream 雖然資產也不是設備上的文件,但是AssetManager API更加類似於文件。

如果要堅持使用原始資源,則需要使用Java反射來遍歷R.raw上定義的所有static字段以查找其資源ID,然后在Resources()對象上使用openRawResource()獲得InputStream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM