读取文本文件方法



我是一个机器人新手,所以如果这看起来微不足道,以及这篇冗长的帖子,我很抱歉。我已经在谷歌上搜索了etc,但我能找到的唯一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=new readSectionFile("Sect_US.dat")处崩溃;

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

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

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

您写道:

我要正确打开这个文本文件(在/assets中)吗?

一种选择是将文本文件放置在res下名为raw的目录中,并使用openRawResource(...)将其读取到String中。

假设您在raw目录中有一个名为my_text_file的文本文件,

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();
}

相关内容

  • 没有找到相关文章

最新更新