【发布时间】:2021-01-28 19:05:16
【问题描述】:
我有这三种方法,我正在尝试使用缓冲写入器将三个列表的内容写入文件。
第一种方法:保存文件:
public static String showSaveDialog()
{
String fileName = "";
JFileChooser chooser = new JFileChooser();
// Suggesting a name
chooser.setSelectedFile(new File("fileToSave.txt"));
int resultValue = chooser.showSaveDialog(null);
if (resultValue == JFileChooser.APPROVE_OPTION) {
fileName = chooser.getSelectedFile().getAbsolutePath();
Path = chooser.getSelectedFile().getAbsolutePath();
}
writeToTextFile(fileName, "");
return fileName;
}
第二种方法:写入文件:
public static void writeToTextFile(String filePath, String toWrite)
{
BufferedWriter writer = null;
try {
writer = Files.newBufferedWriter(Paths.get(filePath),
StandardOpenOption.CREATE);
writer.write(toWrite);
writer.newLine();
writer.close();
}
catch (IOException ex) {
JOptionPane.showMessageDialog(null,
"Saving File Error: " + ex.getMessage(),
"Saving File Error", JOptionPane.ERROR_MESSAGE);
}
}
第三种方法:将三个列表的内容写入文本文件:
public void saveAllQuestions() {
for (String q : questionList){
FileIO.writeToTextFile(FileIO.Path, "$" + q);
for (int i = 0; i < answerList.size(); i++) {
FileIO.writeToTextFile(FileIO.Path,
answerList.get(i) + ", " + correctAnswers.get(i));
}
}
}
当写入文件时,最后一行是唯一显示的行。我假设这个问题是由于它只写入一行而不是彼此下方。有人可以给我一些见解吗?谢谢
【问题讨论】:
-
您有一个循环,不断打开文件并向其中写入一行文本。您的代码应该在循环之前打开文件。然后将多行写入文件。然后当循环结束时你关闭文件。
-
请问您指的是哪种方法?
-
只有一种方法有循环。 1)打开文件 2)使用循环将数据写入文件 3)关闭文件。所以基本上不需要 writeToTextFile(...) 方法。
标签: java arraylist io bufferedwriter