2011-07-26 134 views
1

我正在嘗試從文本文件中讀取值。該文件的每行有6個雙打。 我創建了一個getBufReader方法Android:從文本文件中讀取雙精度並將它們放入數組

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( 「\ n」)的錯誤;}}

請幫

而且,我得到的錯誤如果我不用try/catch來包裝reader_0.readLine()。

回答

0

我會創建一個FileInputStream和一個緩衝讀取器。我從筆記本上寫這個,所以我不能測試這個代碼,但是這應該給你一個大概的想法(我的第一個應用程序在文本文件中保存了獨立行上的數據,我可以使用這種方法讀取和寫入) 這需要你知道有多少行是在您的文件

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++; 
} 

請注意,這是非常草率的代碼不幾乎可以肯定不會工作這只是讓你開始,我會後我的工作代碼時,我下班回家。

+0

我意識到活動崩潰,每當我呼籲reader.readLine()。我不知道該怎麼做。 – Gloria

相關問題