如何让 BufferedWriter 在写入文件时从 ArrayList 中删除括号?

How do you get BufferedWriter to remove brackets from an ArrayList when writing to a file?

我制作了一个 bufferedWriter 来获取事物的数组列表并用逗号分隔它们。它运行良好,但是当我检索数据时,它开始添加额外的括号:[banana, potato, tomato, carrot] 进入并且 [[banana, potato, tomato, carrot]] 出来。这是写入文件的代码:

public static void writeToCSV() throws IOException {//Finds the file name.
    BufferedWriter bufferedWriter = null;
    try {
        String gameHeader = String.valueOf(getTitleRow());
        //Finds the file
        File file = new File("_GAMES/" + getSaveName() + "_" + stepped + ".csv");

        FileWriter fileWriter = new FileWriter(file);
        bufferedWriter = new BufferedWriter(fileWriter);
        bufferedWriter.write(gameHeader);

        System.out.println("File: " + getSaveName() + " written");

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (bufferedWriter!=null) {
                bufferedWriter.close();
            }
        } catch (Exception ex) {
            System.out.println("Error in closing" + ex);
        }
    }
}

这是数组列表:

ArrayList<String> headerRow = new ArrayList<>();
        headerRow.add(strDate);
        headerRow.add("6 x 10");
        headerRow.add("1");
        headerRow.add("6");
        headerRow.add("11");

我还使用 getter/setter 在范围之间移动数组列表:

private static ArrayList<String> titleRow =  new ArrayList<>();

public static ArrayList<String> getTitleRow() {
    return titleRow;
}

public void setTitleRow(ArrayList<String> titleRow) {
    this.titleRow = new ArrayList<>(titleRow);
}

我确定有一种方法可以使用正则表达式将“[”和“]”替换为“”,但我不确定在哪里调用它。

问题是您使用 String.valueOf(list) 作为获取逗号分隔值列表的方法。

这不好,因为列表的字符串表示在其值周围添加了括号:[value1, value2, value3, ...]。 更好的解决方案是将 String.valueOf() 替换为

String.join(",", getTitleRow()));

产生:

2022-04-13,6 x 10,1,6,11

这并不完美,因为有时需要引用值(用“ ”括起来),但这可能足以满足您的需要。 或者使用像 https://commons.apache.org/proper/commons-csv/.

这样的 csv 库