2012-04-23 40 views
1

在我的Android應用程序中,我加載了一個文件和一個包含一堆文件的文件夾。我試圖確定這些應該作爲資源添加,還是作爲資源或其他東西完全添加。Android:將外部文件和文件夾存儲爲資產?資源?還有別的嗎?

該文件是一個XML文件,其路徑被傳遞給一個類構造函數,該類構造函數根據文件中包含的內容創建一個對象。如果需要,我可以訪問構造函數代碼。

該文件夾包含一堆特殊格式的非人類可讀文件。文件夾的路徑傳遞給另一個知道文件夾結構的構造函數,並創建一個對象。我無法訪問其代碼。

噢,這兩者沒有任何關係,除了它們是由同一個應用程序所需要的事實。

那麼我應該如何存儲這些?我首先想到了將它們添加爲資產,但顯然我只能得到一個不起作用的資產的輸入流。如果我將該文件夾添加爲資源,是否必須進入res /下的特定子文件夾?哪一個? te XML文件是否必須放在res/xml下?無論是資產還是資源,是否都有我用來訪問文件和文件夾的默認根路徑?

Thx!

+0

這些文件是否需要隨時間改變,或者如果它們隨您的源代碼一起提供且永不改變,那麼這些文件是否可以更改? – wsanville 2012-04-23 18:48:57

+0

我會說文件夾中的文件非常靜態。也就是說,他們可能會更新,但可能與代碼本身一樣多(bug修復等)。 XML文件不是靜態的。它包含一個排序列表,用戶可以選擇使用應用程序向列表中添加更多項目。 – 2012-04-23 19:01:56

+0

資產和資源不能在運行時更改,因此請考慮這一點。 – wsanville 2012-04-23 19:39:07

回答

2

爲了性能方面的原因,我會將該XML文件放在res/xml/之下。 res/xml/支持任意XML,所有XML編碼資源的解析速度比解析普通文件快10倍。您的「從文件中包含的內容創建對象的類構造函數」將使用從該對象的Resources對象獲得的XmlResourceParser

就文件夾而言,請使用assets/,因爲您無法在資源(原始或其他)中使用文件夾結構。

我首先想到其添加爲資產,但顯然我只能得到一個資產,是行不通的輸入流。

如果您希望將文件打包到應用程序中並直接使用它們,您並沒有真正的選擇。資源和資產都不能直接作爲文件提供。將內容作爲文件獲取的唯一方法是,您可以使用流將它們複製到本地文件中,這樣可以增加它們佔用的存儲量,而對於XML,則會降低解析性能。