Мне нужно сбросить 6 миллионов файлов, которые содержат около 100-200 символов, и это очень медленно. Фактическая медленная часть - это запись файла, если я прокомментирую эту часть (вызов метода WriteSoveraFile), все это работает через 5-10 минут. Как бы то ни было, я запустил его на ночь (16 часов) и получил 2 миллиона записей.Быстрый способ записи миллионов небольших текстовых файлов в Java?
есть ли какой-либо более быстрый способ?
Могу ли я лучше создать массив массивов, а затем сбросить его все сразу? (Моя система имеет только 4 ГБ, не умрет от 6 ГБ потребленных этим данным?)
Вот процедура:
public static void WriteSoveraFile(String fileName, String path, String contents) throws IOException {
BufferedWriter bw = null;
try {
String outputFolderPath = cloGetAsFile(GenCCD.o_OutER7Folder).getAbsolutePath() ;
File folder = new File(String.format("%1$s/Sovera/%2$s/", outputFolderPath, path));
if (! folder.exists()) {
folder.mkdirs();
/* if (this.rcmdWriter != null)
this.rcmdWriter.close();
*/
}
File file = new File(String.format("%1$s/%2$s", folder.getAbsolutePath(),fileName));
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
FileWriter fw = new FileWriter(file.getAbsoluteFile());
bw = new BufferedWriter(fw);
bw.write(contents);
bw.close();
}
/* else {
file.delete(); // want to delete the file?? or just overwrite it??
file.createNewFile();*/
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bw != null) bw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Ну, если вам действительно нужно написать 6 миллионов отдельных файлов, это займет некоторое время, и это будет медленным, потому что жесткие диски медленны. Я не знаю, влияете ли вы на это, но в этом масштабе данных я бы подумал об использовании базы данных вместо файлов. – LionC
Вы рассмотрели использование системы управления базами данных для хранения метаданных? – NPE
ха-ха, нет, мы не можем использовать базу данных. В основном мы взаимодействуем с медицинским приложением и потребляем отсканированные документы, им нужен файл метаданных. Поскольку мы конвертируем более 10 лет данных с крупного предприятия, есть тонна данных. Так что да, мы застряли в миллионах крошечных файлов. – Rob