我正在使用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中的空字符串。但是它抛出了异常,这是我上面提到的。
答案 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...
}