2011-07-26 14 views
1

テキストファイルから値を読み取ろうとしています。ファイルの各行に6つのダブルスがあります。 Iは、ファイルの各行は、私の2次元アレイに行全体であることが想定されるAndroid:テキストファイルからdoubleを読み込んで配列に入れよう

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

getBufReaderメソッドを作成しました。私は行を取得し、それをトークン化して配列に格納しようとしました。しかし、プログラムはクラッシュし続けます。私は

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")を期待するようDDMSログ束やエラーを発生しないん;}}

を私はエラーを取得し、また、

を助けてください私がtry/catchでreader_0.readLine()を実行しなかった場合。

答えて

0

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

THISは、ほぼ間違いなく文句を言わないWORKが、これはあなたが始めたと私は私の作業コードを掲載します取得するだけで、非常にずさんなコードであることに注意してください、あなたのファイルにある行数を知っているあなたを必要としたときにI仕事から家に帰る。

+0

私はreader.readLine()を呼び出すたびにアクティビティがクラッシュすることを認識しました。私は何をすべきか分からない。 – Gloria

関連する問題