我是一个android newby,所以很抱歉,如果这看起来很琐碎,又冗长的帖子。我已经用谷歌搜索过,但是我能找到的唯一的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()上出错。

我正在尝试使用列表视图的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 =新的readSectionFile(“ Sect_US.dat”)时崩溃。

同样,在readSectionFile代码中,buf的第二个实例生成一个Eclipse错误,要求一个try,catch块,而第一个实例被接受。

我的问题是
我要正确打开该文本文件(在/ assets中)吗?
第二次buf使用有什么问题?

最佳答案

getAssets()是Activity中的方法。如果尝试从另一个类调用getAssets(),则将活动的上下文传递给您要在其中调用该方法的类,然后再调用context.getAssets()。

07-27 18:51