2010-06-09 67 views
2

問題:如何以編程方式區分資產文件夾中的目錄和常規文件?確定資產文件夾中文件的文件類型

當使用AssetManager訪問資產文件夾中的文件時,似乎無法確定文件實際上是文件還是目錄。您從list方法獲得文件列表,然後使用open方法打開文件。我想可能使用openFd方法獲取資產文件描述符(然後請求正常的文件描述符)會提供一些信息。但是請求一個目錄的文件描述符會導致一個IOException(這很有意義,因爲這對於一個目錄有一個文件描述符意味着什麼?)。

目前我依靠IOException(由於嘗試在資產文件夾中打開一個目錄而產生)以確定文件是否實際上是一個目錄。 (打開一個普通的文件工作得很好)。這似乎是一個壞主意。任何其他建議來區分文件和目錄?

+2

你如何安排你的文件到資產目錄?你不能保持檔案 與文件夾分開,而不是混合所有的東西嗎? – 2010-06-09 22:01:39

+1

同意。你是放置在「assets /'目錄中的人。因此,你不應該猜測什麼是和不是一個目錄。 – CommonsWare 2010-06-09 22:51:52

+0

無論您如何將文件放在'assets /'文件夾中,這個問題都存在。 list方法返回位於請求的目錄路徑(例如'image.jpg','music.mp3','Tools')中的所有文件的String []陣列。如果你想在'assets /'裏面有任何的目錄結構,你會遇到這個問題。 – ChaimKut 2010-06-10 12:58:29

回答

1

我同意你的帖子上的評論。但是,爲了回答你的問題,使文件對象指向了資產目錄 File root = new File("path/to/directory");

然後一旦你的列表,你可以決定什麼是什麼,你可以提取它的所有子文件和目錄這樣 File[] files = root.listFiles();

使用File.isDirectory()。

至於確定文件類型,就像使用String.subString()來抓取最後一段時間後的字符一樣簡單。

希望這有助於

相關問題