Я работаю над проектом, который работает на очень большом количестве данных. У меня есть много (тысяч) почтовых файлов, каждый из которых содержит ОДИН простой текстовый файл с тысячами строк (около 80 тыс. Строк). То, что я сейчас делаю это следующее:Чтение файла zip эффективно в Java
for(File zipFile: dir.listFiles()){
ZipFile zf = new ZipFile(zipFile);
ZipEntry ze = (ZipEntry) zf.entries().nextElement();
BufferedReader in = new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));
...
Таким образом, я могу прочитать файл построчно, но это определенно слишком медленно. Учитывая большое количество файлов и строк, которые нужно читать, мне нужно их более эффективно читать.
Я искал другой подход, но я ничего не смог найти. Я думаю, что я должен использовать API-интерфейсы java nio, предназначенные для интенсивных операций ввода-вывода, но я не знаю, как их использовать с zip-файлами.
Любая помощь будет действительно оценена.
Спасибо,
Marco
Насколько велики файлы? Сколько времени требуется, чтобы прочитать их, используя этот код? Сколько времени требуется, чтобы скопировать их в '/ dev/null'? – NPE
Вы должны сначала определить, потрачено ли большинство вашего времени на чтение из zip-файлов или обработка строк текста. Что вы делаете с каждой строкой в текстовых файлах? –
@aix Зашифрованные файлы составляют около 30 МБ каждый, а txt внутри zip-файла - около 60/70 МБ. Либо размер и количество строк не фиксированы, они могут меняться, но теоретически они должны быть всегда одинаковыми по размеру и количеству строк. Чтение и обработка файлов с помощью этого кода занимает много часов, около 15, но это зависит от многих факторов. –