Java 解析csv时保留引号

Java 解析csv时保留引号,java,csv,opencsv,Java,Csv,Opencsv,我知道已经有一个问题与此相关:(但这是C#的问题) 假设我有一个csv,其值如下: 12312414-DEF_234, "34-DE, 234-EG, 36354-EJ", 23 ... 当我用OpenCSV解析它时,它不会保留引号 CSVReader reader = new CSVReader(new FileReader("../path.csv"), ',', '\"'); List<String[]> list = reader.readAll(); String[][

我知道已经有一个问题与此相关:(但这是C#的问题)

假设我有一个csv,其值如下:

12312414-DEF_234, "34-DE, 234-EG, 36354-EJ", 23
...
当我用OpenCSV解析它时,它不会保留引号

CSVReader reader = new CSVReader(new FileReader("../path.csv"), ',', '\"');
List<String[]> list = reader.readAll();

String[][] csvArray = new String[list.size()][];
csvArray = list.toArray(csvArray);

我怎样才能保留报价?原因是我将要更改一些值,需要将其重新输出回csv。

CSVReader必须解析并删除引号,否则您不会得到一个值
34-DE,234-EG,36354-EJ
,而是三个值
“34-DE
234-EG
36354-EJ
。所以删除引号是可以的

CSVWriter
应该为每个需要引用的值再次添加它们


您是否尝试将数组写回CSV?值
34-DE,234-EG,36354-EJ
——实际上任何包含逗号的值——都应该加引号。

是的,CSVWriter会将引号添加到所有以逗号分隔的值中。但理想的情况是,我希望它的格式与我收到它时的格式相同。。这意味着只有第二列中的那个值——或者这无关紧要,并且文件可以用同样的方式读取,所有都用引号括起来?@B.V因为CSVWriter会把它们加回去,我不明白为什么这会有关系
public static void readCSV(){
    String csvFile = "input.csv";
    BufferedReader br = null;
    String line = "";
    String splitter = ",";

    try {

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {

                // use comma as separator
            String[] words = line.split(splitter);
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
public static void readCSV(){
    String csvFile = "input.csv";
    BufferedReader br = null;
    String line = "";
    String splitter = ",";

    try {

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {

                // use comma as separator
            String[] words = line.split(splitter);
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}