0

SD カードに保存されているテキスト ファイルがあります。SD カードのテキスト ファイルから文字列配列にデータをコピーしたいです。データを文字列配列に保存し、後でそのデータを autocompletetextview で使用したいと考えています。

package com.example.pro2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b1=(Button)findViewById(R.id.button1);
        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                ReadSettings();

            }
        });
    }
    public void ReadSettings(){

        try{             
            File sdcard = Environment.getExternalStorageDirectory();
            File file = new File(sdcard,"comm.txt");        
               FileInputStream fileIS = new FileInputStream(file);          
               BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS));           
               String readString = new String();                


               String val[] = null;
               for(int i=0;i<5;i++)
               {
               while ((readString = buf.readLine()) != null) {
                   Log.d("line: ", readString);   
                   val[i] = readString;
                   Log.d("values", val[i]);
                   // u better use an ArrayList or you have to check if i < val.size
               }
               }

            } catch (FileNotFoundException e) {          
               e.printStackTrace();          
            } catch (IOException e){             
               e.printStackTrace();          
        }    
    } 
    }

しかし、それは強制終了を示しています.Plz help.

4

3 に答える 3

1

おそらく答えではありません。ここを変更してください:

ArrayList<String> val = new ArrayList();
               int i=0;

               while ((readString = buf.readLine()) != null) {
                   Log.d("line: ", readString);   
                   val.add(readString);
                   Log.d("values", val.get(i).toString());
           i++;
                   // u better use an ArrayList or you have to check if i < val.size
于 2012-08-27T07:44:19.523 に答える
0

文字列配列はサイズ変更できないため、文字列バッファまたはArraylistを使用し、後で配列に変換します......

文字列配列を初期化できるように、データのサイズを事前に知っておく必要があります。

//ArrayList<String>  mArrayList  = new ArrayList<String>();
String abc[] = new String[file size ];

またはArrayListを使用します

    mArrayList.add(readString);
    int size =mArrayList.size();
    Object[] m= mArrayList.toArray();

m には文字列配列が含まれており、必要に応じて toString を使用して 1 つずつ取得します

于 2012-08-27T07:48:52.320 に答える
0

これを試してください-->

 val[i++] = readString; 

val[i] = readString; の代わりに

于 2012-08-27T07:43:58.600 に答える