Если я попытаюсь прочитать файл CSV с именем csv_file.csv
. Проблема в том, что когда я читаю строки с BufferedReader.readLine()
, он пропускает первую строку с месяцами. Но когда я переименую файл в csv_file.txt
, он читает его в полном порядке и не пропускает первую строку.поведение Java BufferedReader в файле CSV vs TXT
Есть ли недокументированная «функция» BufferedReader, которую я не знаю?
Пример файла:
Months, SEP2010, OCT2010, NOV2010
col1, col2, col3, col4, col5
aaa,,sdf,"12,456",bla bla bla, xsaffadfafda
and so on, and so on, "10,00", xxx, xxx
Код:
FileInputStream stream = new FileInputStream(UploadSupport.TEMPORARY_FILES_PATH+fileName);
BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
String line = br.readLine();
String months[] = line.split(",");
while ((line=br.readLine())!=null) {
/*parse other lines*/
}
Показать Ваш код. BufferedReader не осведомлен о файле или имени файла, просто о содержимом, которое он читает у другого Reader. –
i обновил описание моего вопроса ... и я знаю, что java не заботится о имени файла, но я получаю различное поведение для разных имен файлов. – Gabriel
Кажется, надуманным, что изменение в поведении вызвано расширение. Как вы переименовываете файл (через переименование ОС или путем перепродажи через одно приложение или с помощью другого редактора)? Возможно, потребуется дополнительная отладка. Что произойдет, если вы измените расширение на «.csv»? Что делать, если вы сначала сохранили файл с расширением «.txt» (из Excel)? Каково содержимое для линии, которая выбрасывается? –