标题说明了一切。这是我的ResultSet代码:
try {
while (rs.next()) {
int ID = rs.getInt("ID");
String Name = rs.getString("Name");
String CountryCode = rs.getString("CountryCode");
String District = rs.getString("District");
int Population = rs.getInt("Population");
//Display values
try {
writeToFile(ID, Name, CountryCode, District, Population);
} catch (IOException e) {
e.printStackTrace();
}
}
这是我的writeToFile方法:
public void writeToFile(int id, String name, String countryCode, String district, int population) throws IOException {
FileWriter fw = new FileWriter("C:\\Users\\horry\\Desktop\\results.txt");
fw.write(id + " " + name + " " + countryCode + " " + district + " " + population + "\n");
try {
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我尝试了通常的flush和close方法,但缺少了一些东西。文件编写者应该被宣布为elsewgere吗?
答案 0 :(得分:2)
尝试使用附加选项
打开文件 FileWriter fw = new FileWriter("C:\\Users\\horry\\Desktop\\results.txt", true);
要在任何平台(例如linux)中添加新行,请使用下面的常规行分隔符
fw.write(id + " " + name + " " + countryCode + " " + district + " " + population + System.getProperty("line.separator"));
答案 1 :(得分:-1)
您正在为ResultSet的每次迭代打开一个新的FileWriter。默认情况下,FileWriter会在文件的开头写入。因此,您将不断覆盖上一次迭代中文件中所写的内容。
此外,我建议不要在每次迭代时创建一个新的FileWriter。我只打开一次FileWriter,并将其用于所有的配置。
然后,使用BufferedWriter而不是纯FileWriter。它会快得多。
另外,在finally块中关闭writer,而不是在try中。从Java 7开始,您甚至可以使用try-with-resources。
最后,使用br.newLine();
写一个新行,而不是自己管理“\ n”。
请检查以下代码
File f = new File("C:\\Users\\horry\\Desktop\\results.txt");
try (BufferedWriter bw = new BufferedWriter(new FileWriter(f))) {
while (rs.next()) {
int id = rs.getInt("ID");
String name = rs.getString("Name");
String countryCode = rs.getString("CountryCode");
String district = rs.getString("District");
int population = rs.getInt("Population");
bw.write(id + " " + name + " " + countryCode + " " + district + " " + population);
bw.newLine();
}
}