2014-01-15 2 views
0

У меня есть ZIP-файл csv, который будет обрабатываться на регулярной основе 3-4 раза в день. Размер может быть от 500 до 1000 мб.Прочитать zip-файл по строкам или сначала выполнить распаковку?

Я хочу прочесть содержащиеся строки csv по строкам. Поэтому лучше сначала распаковать файл и прочитать его, или я также могу использовать поток java Zip для чтения файла?

Есть ли какое-либо преимущество (производительность?) Одного подхода над другим?

+0

.zip 1000mb, или csv данные 1000mb? zps csv, вероятно, будет намного больше, чем 1000mb-почтовый индекс, который содержит его. –

ответ

1

Одним из самых медленных действий для компьютера является доступ к жесткому диску (по крайней мере, до тех пор, пока SSD не станут более распространенными). Поэтому разархивируйте его, а затем чтение распакованного файла будет значительно медленнее.

Вы получите гораздо лучшие строки для чтения производительности непосредственно из ZipInputStream.

0

На мой взгляд, расстегивание происходит быстрее и, возможно, проще. Если производительность важна, проверьте оба метода. Если пространство на диске ограничено, что сейчас не так, тогда у вас нет выбора, кроме как читать внутри zip.

0

Zipping и Unzipping будут оба дорогостоящими.

Если вы можете получить доступ к CSV-файлу без разархивирования (я не знаю, сложно ли читать файл .csv в сжатом состоянии), вы можете открыть файл .CSV как RandomAccessFile только для работы с конкретными вместо всего файла.

Это может быть или не быть применимым, но, по крайней мере, это значительно улучшит производительность, поскольку вы будете читать или записывать данные только там, где вам нужно.

+0

Нет, я получаю файл как zipped csv, не влияющий на это ... – membersound

Смежные вопросы