如何在阅读之前更新文件内容?

时间:2017-07-26 10:46:29

标签: java excel csv combobox filereader

我正在编写一个程序,要求我能够将人的个人详细信息写入excel文件。我必须能够读取此文件的内容并将其显示在组合框中。但是,目前如果我运行程序并输入一个人的详细信息,然后使用组合框选择其中一个人,任何在程序当前运行中输入的人都不会显示在组合框中。但是,如果我关闭程序并再次运行它,它们就会出现。我该如何解决这个问题?

String csvFile = "Clients.csv";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = ",";
        String fullName = null;

        try {
            File file = new File("Clients.csv");
            br = new BufferedReader(new FileReader(file));
            while ((line = br.readLine()) != null) {
                String[] data = line.split(cvsSplitBy);
                fullName = data[0]+" "+data[1];
                comboBox_1.addItem(fullName);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        //FILE READING END
        comboBox_1.setBounds(130, 25, 584, 20);
        existingClients.add(comboBox_1);

2 个答案:

答案 0 :(得分:0)

运行程序时,BufferedReader会输入包含当前数据的csv文件。在运行时,您的程序不知道您是否在csv文件中输入了新条目。

当您点击“添加人员”按钮(或您在程序中调用的任何内容)时,您应该编写一段更新csv文件的代码块,然后触发新的BufferedReader。

编辑:

我不知道你的程序是gui或控制台应用程序,但我会尝试解释好像我们正在谈论gui。

步骤-1 - >当用户在您的程序中填写textarea中新人的详细信息时,或当他/她点击“添加人”按钮时,您应该存储此人的详细信息。

步骤2 - >然后您必须创建一个编写器实例。此实例必须将新数据附加到csv文件;

BufferedWriter writer = new BufferedWriter(new FileWriter(csvFile));
writer.write("\n" + newPersonDataasString + "\n");

步骤3 - >最后,您必须使用带有csv文件的新BufferedReader再次读取文件。

作为exe-cute-table提到,将这些步骤包装到readFile(),writeFile()等自定义方法中是一个很好的维护目的。

如果我误导了你,现在就告诉我。

答案 1 :(得分:0)

每次在文件中写入时,都必须再次打开它(使用BufferedReader),也可以看到更改。 BufferedReader一旦创建,将不会存储CSV文件的新更改。

所以最好的方法是有两个功能:

  • readFile(filename)将使用BufferedReader(已创建,使用和关闭)读取文件

  • writeFile(filename, contentToWrite)将使用BufferedWriter(也创建,使用和关闭)写入文件

每次添加某人时,请致电writeFile("your.csv", your_data)。 每次要显示csv中的数据时(例如列出存储的所有人),请致电readFile("your.csv")