我正在尝试从资源中读取文件“words.txt”。这是一个非常简单但很大(2 MB)的文本文件,我想逐行阅读。我已将文件放入/res/raw/words.txt,并尝试使用以下代码打开它:
try
{
BufferedReader in =
new BufferedReader(
new InputStreamReader(getResources().openRawResource(R.raw.words)));
String line=in.readLine();
T.append(line); T.append("\n");
in.close();
}
catch (Exception e) { T.append(e.toString()); }
但是,我得到了一个java.io.IOException。这不是“未找到资源”异常,因此资源正确打开,但readLine()会产生错误。
我尝试使用InputStream本身,结果是read()产生-1,代表EOF,就像文件是空的一样。
对我有任何帮助吗?
直到现在我仍在拆分长文件。所以这是我能给出的最佳答案。谁有更好的主意?
答案 0 :(得分:3)
试试这个:
InputStream is = c.getResources().openRawResource(R.raw.csv_file);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String readLine = null;
try {
while ((readLine = br.readLine()) != null) {
}
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
//在你的加载函数之外声明这些
public String teststring;
public int loadcounter;
//我把这段代码放在gl表面加载函数
中//加载功能 //注意c改为上下文
InputStream is = context.getResources().openRawResource(R.raw.ship1);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String readLine = null;
try {
while ((readLine = br.readLine()) != null) {
if(loadcounter ==0)
{
teststring=br.readLine();//get first line to printable string
//this code works
//array[loadcounter] = br.readLine();
//want to get this remarked part working for level load
}
loadcounter++; //var will increment an array
}
} catch (IOException e) {
e.printStackTrace(); //create exception output
}
//我使用了一个文件ship1.txt。你需要在资源文件夹中创建一个原始文件夹,然后//在那里创建一个ship1.txt。 //这段代码最终解决了我的简单文本加载问题