метод чтения текстового файла - PullRequest
1 голос
/ 18 июня 2011

Я новичок в Android, поэтому извиняюсь, если это кажется тривиальным, и длинный пост. Я гуглил и т. Д., Но единственные ссылки на 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?

Ответы [ 2 ]

1 голос
/ 18 июня 2011

getAssets () - это метод в Activity. Если вы пытаетесь вызвать getAssets () из другого класса, передайте контекст действия классу, в котором вы хотите вызвать метод, а затем вызовите context.getAssets ().

0 голосов
/ 13 июня 2013

Вы писали:

Собираюсь ли я правильно открыть этот текстовый файл (в / 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...