2011-09-29 165 views
0

我想訪問位於資產下的文本文件,該文件將對該文件執行一些處理,並在我的活動中調用。我使用的代碼是:Android訪問資產文件

AssetManager assetManager = getAssets(); 
InputStream instream = assetManager.open("file.txt"); 

如果一個Activity類使用,但如何讓它在一個普通的Java類工作,這工作得很好?

被修改

JamesBlack - 因爲如果我通過了InputStream,則下面的代碼將不工作

for (int i = 0; i < gestureNumbers.size(); i++) { 
    BufferedReader bf = new BufferedReader(new InputStreamReader(instream)); 
    // possible error here 
    while ((line = bf.readLine()) != null) { ... } 
} 

即使gestureNumbers.size()> 1,則while循環只執行一次然後一旦讀取文件就等於空。

當下面的代碼工作,但我不能在純java類中打開文件,它在活動類中工作,我不想在一個類中有太多的代碼。

for (int i = 0; i < gestureNumbers.size(); i++) { 
    InputStream instream = assetManager.open("BSL_Word_POS.txt"); 
    BufferedReader bf = new BufferedReader(new InputStreamReader(instream)); 
    // possible error here 
    while ((line = bf.readLine()) != null) { ... } 
} 
+1

爲什麼不將InputStream傳遞給純java類。爲什麼你不想在活動中這樣做? –

+1

如果你想在普通的java類中做,然後將活動類的上下文傳遞給你的Java類,然後context.getAssets(); 會工作 – ingsaurabh

回答

3

您必須將上下文傳遞給該java類才能訪問資產文件夾。

+0

你能舉一個例子嗎 – Radek

+2

NextClass nextview = new NextClass(current_activity.this); public class NextClass { \t public NextClass(上下文上下文){ \t \t AssetManager assetManager = getAssets(); \t \t \t InputStream instream = assetManager.open(「file.txt」); } – Thiru