在 JFrame 窗体中使用缓冲编写器打印 ArrayList (Java)
Printing an ArrayList using buffered writer in JFrame Form (Java)
我有这三种方法,我正在尝试使用缓冲写入器将三个列表的内容写入文件。
第一种方法:保存文件:
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));
}
}
}
写入文件时,最后一行是唯一显示的。我假设这个问题是由于它只写一行而不是写在另一行下面。有人可以给我一些见解吗?谢谢
您正在为您编写的每一行打开和关闭文件。每次写一行时,您都会删除文件的先前版本并将其替换为该行。您需要打开文件,写入所有行,然后关闭文件。
我有这三种方法,我正在尝试使用缓冲写入器将三个列表的内容写入文件。
第一种方法:保存文件:
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));
}
}
}
写入文件时,最后一行是唯一显示的。我假设这个问题是由于它只写一行而不是写在另一行下面。有人可以给我一些见解吗?谢谢
您正在为您编写的每一行打开和关闭文件。每次写一行时,您都会删除文件的先前版本并将其替换为该行。您需要打开文件,写入所有行,然后关闭文件。