【问题标题】:Printing an ArrayList using buffered writer in JFrame Form (Java)使用 JFrame 形式 (Java) 中的缓冲写入器打印 ArrayList
【发布时间】: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


【解决方案1】:

你正在为你写的每一行打开和关闭文件。每次编写一行时,您都会删除文件的先前版本并用该行替换它。您需要打开文件,写入所有行,然后关闭文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多