2011-07-26 102 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

相关问题