2011-09-29 149 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