我是一个Android newby所以道歉,如果这看似微不足道,而且冗长的帖子。我用google搜索等,但我能找到的唯一的android引用似乎是指
InputStream is = getAssets().open("read_asset.txt");
int size = is.available();
// Read the entire asset into a local byte buffer.
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
我尝试在我的课程中使用它,但即使在导入java.io.InputStream之后;它在getAssets()上出错了。
我正在尝试使用listview的rowId点击; 打开一个文本文件(取决于rowId值), 逐行读取文件, 生成前16个字符的字符串数组等 然后使用数组填充下一个活动的列表视图。
String[] sectID = null; //to be loaded in listview
switch (rowId){
case 0://custom, go to section input screen
case 1:
readSectionFile s = new readSectionFile("Sect_US.dat");
sectID=s.arrayShapesAll();
我的readSectionFile类(提取)是;
public readSectionFile(String FileName) {
//Count the number of section records in the data file
String line = null; // String that holds current file line
int recordcount = 0; // Line number of count
try{
BufferedReader buf = new BufferedReader(new FileReader(FileName));
// Read file to count records
while ((line = buf.readLine()) != null){ //null = EOF
line = buf.readLine();
if (line.substring(0, 1).equals("*") || line.length() == 0) { //== comment or blank line
//do nothing
}else{
recordcount++;
}
}//while
buf.close();
}catch (IOException x){
x.printStackTrace();
}//end try
// Now read file to load array
mSectionIDArray = new String[recordcount + 1];
mSectionIdx = new int[recordcount + 1][2];
mData = new double[recordcount + 1][15];
int c=0;
String sectdata = null; // String that holds current file line
try {
BufferedReader buf = new BufferedReader(new FileReader(FileName));
while ((sectdata = buf.readLine()) != null){ //null = EOF
sectdata = buf.readLine();
代码不起作用并在readSectionFile s = new readSectionFile(“Sect_US.dat”);
崩溃另外,在readSectionFile代码中,buf的第二个实例生成一个Eclipse错误,要求try,catch块,而第一个实例被接受。
我的问题是, 我打算正确打开这个文本文件(在/ assets中)吗? 第二次使用buf有什么问题?
答案 0 :(得分:1)
getAssets()是Activity中的一个方法。如果您尝试从另一个类调用getAssets(),请将活动的上下文传递给要调用该方法的类,然后调用context.getAssets()。
答案 1 :(得分:0)
您写道:
我打算正确打开这个文本文件(在/ assets中)吗?
一种选择是将文本文件放在raw
下名为res
的目录中,并使用String
将其读入openRawResource(...)
。
假设您在my_text_file
目录中有一个名为raw
的文本文件,
String myText = readTextFileFromResource(context, R.raw.my_text_file);
,其中
private String readTextFileFromResource(Context context, int resourceId){
StringBuilder fileContents = new StringBuilder();
try{
InputStream inputStream = context.getResources().openRawResource(resourceId);
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String nextLine;
while((nextLine = bufferedReader.readLine()) != null){
fileContents.append(nextLine);
fileContents.append('\n');
}
}catch(IOException e){
//handle
}catch(Resources.NotFoundException nfe){
//handle
}
return fileContents.toString();
}