2011-10-21 20 views
0

hereからいくつかのサンプルコードでリソースリーダーを作成しました。ここに私のコード...CSVファイルの内容を読み取る

public static void ReadFile() { 

    BufferedReader reader = new BufferedReader(new InputStreamReader(file)); 

    String line; 
    try { 
     while((line = reader.readLine()) != null){ 
      String[] values = line.split(","); 

      Log.d(TAG, String.valueOf(values.toString())); 
     } 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
} 

私のファイルが...このコードを使用してonResume読まれ

InputStream file = getResources().openRawResource(R.raw.csvfile); 

があると私は私が右のそれを持っていると思いますが、私は

Log.d() 
を使用する場合

私のcsvファイル内の値を読み込むためのユーティリティ(上記のように)私が代わりに何かを得る

10-21 20:38:44.096: DEBUG/input(15223): [Ljava.lang.String;@467bbb20 
10-21 20:38:44.104: DEBUG/input(15223): [Ljava.lang.String;@467bbfd8 
10-21 20:38:44.104: DEBUG/input(15223): [Ljava.lang.String;@467bc3e0 
10-21 20:38:44.112: DEBUG/input(15223): [Ljava.lang.String;@467bc7e8 
10-21 20:38:44.112: DEBUG/input(15223): [Ljava.lang.String;@467bcbf0 
10-21 20:38:44.112: DEBUG/input(15223): [Ljava.lang.String;@467bcff8 
10-21 20:38:44.112: DEBUG/input(15223): [Ljava.lang.String;@467bd400 
10-21 20:38:44.120: DEBUG/input(15223): [Ljava.lang.String;@467bd808 
10-21 20:38:44.120: DEBUG/input(15223): [Ljava.lang.String;@467bdc10 
10-21 20:38:44.120: DEBUG/input(15223): [Ljava.lang.String;@467bde60 

今のようにBufferReaderから直接返すことができるかどうかわかりませんが、私のCSVファイルにある値よりもかなり少ない値があるようです。ここに私のcsvファイルを私は知っているが、午前私はこの権利を得るか、私はここで間違って何をやっている場合は、私のログのタグは、いくつかの読み取り可能なデータを返す必要があり

001, 000, 000, 000, 000, 000, 
001, 000, 000, 000, 000, 000, 
001, 000, 000, 000, 000, 000, 
001, 000, 000, 000, 000, 000, 
001, 000, 000, 000, 000, 000, 
001, 000, 000, 000, 000, 000, 
001, 000, 000, 000, 000, 000, 
001, 000, 000, 000, 000, 000, 
001, 000, 000, 000, 000, 000 

かなり空です。

+1

値が配列の場合、 "values.toString()"から何を期待していますか? – Birey

+0

@Bipinsまあ、私は私のCSVの値が期待していたかもしれないと思うかもしれませんが、余計なステップがあると思います。 – Jack

+0

私はそれが配列にある文字列を出力するとは思わない。おそらく deepToString()はすべての文字列を返します。 – Birey

答えて

3

values.toString()は、値の配列(この場合はメモリ内の位置)の出力のみを出力します。個々の値を出力する必要があります。このような何か:

for(String s : values) Log.d(TAG, s); 

EDIT:あなたはまた、whileループの実行ごとにvaluesを再初期化しています。あなたはStringBuilderを使用して、最後まで手前に行を追加したまま配列に分割したり、ArrayListを使用したり、各行をローカルStringに格納したり、分割したり、それらの値を外側のArrayList

問題ありません。 :)将来の読者のために、とにかく例を追加してうれしいです。

public static void ReadFile() { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(file)); 
    StringBuilder sb = new StringBuilder(); 
    String line; 
    try { 
     while((line = reader.readLine()) != null) { 
      sb.append(line); 
     } 
     String[] values = (sb.toString()).split(","); 
     for(String s : values) Log.d(TAG, s); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

またはラインごとに追加:StringBuilderので

public static void ReadFile() { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(file)); 
    String line; 
    ArrayList<String> values = new ArrayList<String>(); 
    try { 
     while((line = reader.readLine()) != null) { 
      String[] strings = line.split(","); 
      for(String s : strings) { 
       values.add(s); 
      } 
     } 
     for(String s : values) Log.d(TAG, s); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

これらは、私の頭のオフになっているので、そのまま彼らはコンパイルされない場合は、私を障害していない、ハハ。

+0

ああ、それは素晴らしいおかげで動作します^^しかし、推奨するように値を配列リストに入れる方法を示すチュートリアルの例やリンクを与えることができます。ありがとう^^ – Jack

+0

心配していません^^ – Jack

+0

ただ一つのこと:クラス間でArrayListsを共有する方法があります(通常のgetValue(){return value;}メソッドを試してみるとArrayListが – Jack

関連する問題