Java CSV阅读器-替换引号

时间:2019-01-02 11:53:10

标签: java csv

我正在使用CSVReader读取Java中的csv文件。就我而言,csv文件将带有双引号(“)和单引号(')。类似这样的东西。

SL 12" WIR TREE ASST CD

以下我用来读取文件的代码。

CsvReader reader = null;
reader = readFile(fileName, delimiter, encoding);

while (reader.readRecord()) {
   // Code Part
}

每当它穿过reader.readrecord()时,都会抛出异常,因为“记录0中第0列的最大列长度超过100,000。如果您希望列长度大于100,000个字符,则将SafetySwitch属性设置为false。避免此错误。'

我想做的是我需要的, 由于我无法在文件中进行任何更改,因此我尝试将双引号和单引号替换为Java中的空字符串。但是它抛出了异常,这是我上面提到的。

1 个答案:

答案 0 :(得分:0)

我不知道CsvReader是什么(它不是标准JDK的一部分),但是问题似乎发生在readRecord()中,因此在您有机会替换之前字符。因此,CsvReader在这里不可用,例如,您应该使用不太专业的阅读器,例如java.io.BufferedReader

鉴于分隔符不是引号或双引号(出于明显的原因),则此代码段有效:

File file = new File(fileName);
InputStream is = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, encoding));

try {
    String line = reader.readLine();
    while (line != null) {
        //replace qoutes
        line = line.replace("\"", "");
        line = line.replace("'", "");
        //split line according to given delimiter
        String[] items = line.split(delimiter);
        //handle items...
        line = reader.readLine();
    }
}
catch (IOException e) {
    //handle exception...
}