Android: чтение дубликатов из текстового файла и помещение их в массив - PullRequest
1 голос
/ 27 июля 2011

Я пытаюсь прочитать значения из текстового файла. В каждой строке файла 6 двойников. Я создал метод getBufReader

 public BufferedReader getBufReader(String filename, int rawName){
     if(D) Log.i(TAG, "GETTING FILE");
     BufferedReader bufReader = null;
     // open the file for reading
     InputStream instream = getResources().openRawResource(rawName);

     // if file the available for reading
     if (instream != null) {
       // prepare the file for reading
       InputStreamReader inputreader = new InputStreamReader(instream);
       bufReader = new BufferedReader(inputreader);
       }          
     // close the file again
     try{instream.close();}
        catch (Exception e) {
           if(D) Log.e(TAG, "Unable to Close " + filename);}
     return bufReader;
   }

Каждая строка в файле должна быть целой строкой в ​​моем 2D-массиве. Я попытался получить строку, токенизировать ее и поместить в массив. Но программа продолжает падать. Журнал DDMS не выдает кучу или ошибок, как я ожидаю

    public void getData(){    
     int rawName = R.raw.values_doubles;
     BufferedReader reader_0 = getBufReader(strData2, rawName );
     //2D array of x rows and y columns to store the data
     //
     double[][] Data_temp = new double[size_x][size_y];
     String line = null;
     StringTokenizer Strtoken;


     for(i=0;i<size_x;i++){           
         try {line = reader_0.readLine();}catch (IOException e) {}
         if(line != null){ 
            Strtoken = new StringTokenizer(line);
            for(j=0;j<size_y;j++){                 
                if (Strtoken.hasMoreTokens()){
                    Data_temp[i][j] = Double.parseDouble(Strtoken.nextToken());
                    CommandsAdapter.add(""+Data_temp[i][j]+"  ");                  
                    }}

} CommandsAdapter.add ( "\ п");}}

Пожалуйста, помогите

Кроме того, я получаю ошибки, если я не окружаю reader_0.readLine () с помощью try / catch.

1 Ответ

0 голосов
/ 27 июля 2011

Я бы создал FileInputStream и Buffered Reader.Я пишу это с моего портативного компьютера, поэтому я не могу протестировать этот код, но это должно дать вам общее представление (мое первое приложение сохранило данные по отдельным строкам в текстовом файле, и я мог читать и писать в него, используя этот метод) ПРИМЕЧАНИЕ это требует, чтобы вы знали, сколько строк в вашем файле

FileInputStream fis = new FileInputStream(file);
BufferedReader reader = new BufferedReader(fis);

Double myArray[][] = new Double [Text_File_Lines][6];
StringBuffer buffer = new StringBuffer();

int x = 0;
int y = 0; 
while (reader.readLine() != -1) { //indicating end of file
  while (reader.nextChar != '\n' ) { //indicating new line
    while (reader.nextChar != ' ' ) { //indicating no space character
      buffer.append(reader.nextChar());
    }
  Double[y][x] = Double.parseDouble(buffer.toString()); //Parse double and add it to array
  buffer = null; //restore buffer to null
  x++;
  }
y++;
}

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО ЭТО ОЧЕНЬ НЕСКОЛЬКО КОД, КОТОРЫЙ ПОЧТИ БЕЗОПАСНО НЕ БУДЕТ РАБОТАТЬ это только началои я опубликую свой рабочий код, когда вернусь с работы.

...