Java CSV Reader - заменить цитаты

85
5

Я использую CSVReader для чтения файла CSV в Java. В моем случае файл csv будет иметь двойные кавычки (") и одинарные кавычки ('). Примерно так.

SL 12" WIR TREE ASST CD

Ниже код, который я использую, чтобы прочитать файл.

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

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

Всякий раз, когда он пересекает reader.readrecord(), он генерирует исключение как "Максимальная длина столбца 100 000, превышенная в столбце 0 в записи 0. Установите для свойства SafetySwitch значение false, если вы ожидаете, что длина столбцов превышает 100 000 символов, чтобы избежать этой ошибки ".

То, что я пытаюсь сделать и что мне нужно, так как я не могу внести какие-либо изменения в файл, я пытаюсь заменить двойные кавычки и одинарные кавычки на пустую строку в Java. Но это исключение, что я упоминал выше.

спросил(а) 2019-01-02T14:53:00+03:00 2 года, 1 месяц назад
1
Решение
85

Я не знаю, что такое 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...
}

ответил(а) 2019-01-02T18:23:00+03:00 2 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема