无法从文件读取并使用Java写入文件

时间:2016-11-30 03:42:16

标签: java csv arraylist java.util.scanner

尝试从Java中的文件读取数据然后将其写入csv文件时出现问题。我设置了一个ArrayList变量'data',使用Scanner从数据文件中读取行。读取数据并在此行上打印时出现问题:System.out.println(line);

它是这样的:

[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]

有没有理由在线条印刷不规律?我是否需要在某处包含一个循环才能打印主线一次?我的第二个问题是当我尝试将文件写为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();

    }

  }

}

1 个答案:

答案 0 :(得分:0)

您将在循环的每次迭代中重新打开输出文件。默认情况下,FileWriter会覆盖,这就是输出文件中只有一行的原因。

您需要将FileWriter移出循环。