2016-11-30 7 views
-2

Javaでファイルからデータを読み込み、それをcsvファイルに書き込もうとすると問題が発生します。 ArrayList変数 'data'を設定し、スキャナを使用してデータファイルから行を読み込みます。この問題は、データが読み込まれ、次の行に出力されるときに発生します。System.out.println(line);ファイルからの読み込みやJavaでのファイルへの書き込みに問題があります

それはこのように出てくる:ファイルはちょうどこのように見えるとき

[Tim] 
[Tim] 
[March] 
[Tim] 
[March] 
[11751 N River Dr] 
[Tim] 
[March] 
[11751 N River Dr] 
[Apt 4] 
[Tim] 
[March] 
[11751 N River Dr] 
[Apt 4] 
[Mankato] 
[Tim] 
[March] 
[11751 N River Dr] 
[Apt 4] 
[Mankato] 
[MN] 
[Tim] 
[March] 
[11751 N River Dr] 
[Apt 4] 
[Mankato] 
[MN] 
[56001] 

[Tim] 
[March] 
[11751 N River Dr] 
[Apt 4] 
[Mankato] 
[MN] 
[56001] 

は、それが幾分不規則にラインを印刷している理由はありますか?メインラインを一度だけ印刷するためにどこかにループを含める必要がありますか?私の2番目の問題は、ファイルをCSVファイルとして書き込もうとしたときに、最後の行(56001)を印刷しているだけで、他の行は印刷していないという問題が発生しています。これをするために私が紛失していることはありますか?これは私がこれまで持っていたコードです。

import java.util.*; 
import java.io.*; 
public class ReadFromDat { 

/** 
* @param <Data> 
* @param args 
*/ 
    public static ArrayList<String> data; 
    public static void main(String[] args) throws IOException { 
    // TODO Auto-generated method stub 
    @SuppressWarnings("resource") 
    Scanner sc = new Scanner(new File("C:\\Users\\Tim\\Desktop\\data.dat")); 
    data= new ArrayList<String>(); 
    List<String> line = null; 
    while (sc.hasNextLine()){ 
     data.add(sc.nextLine()); 
     for (String lines: data) { 
      line = new ArrayList<String>(Arrays.asList(lines.split("\n"))); 
      System.out.println(line); 
     } 
     //line = Arrays.asList(data.split("\n")); 
     //System.out.println(data); 
     FileWriter output = new FileWriter("C:\\Users\\Tim\\Desktop\\data.csv"); 
     for (String data: line) { 
      output.write(data); 
     } 
     output.close(); 

    } 

    } 

} 
+2

[デバッグ方法を学んでください](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) – shmosel

答えて

0

ループの繰り返しごとに出力ファイルを開いています。 FileWriterはデフォルトで上書きされるため、出力ファイルには1行しか表示されません。

ループからFileWriterを移動する必要があります。

関連する問題