尝试从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();
}
}
}
答案 0 :(得分:0)
您将在循环的每次迭代中重新打开输出文件。默认情况下,FileWriter会覆盖,这就是输出文件中只有一行的原因。
您需要将FileWriter移出循环。