toxa_1995
@toxa_1995
Начинающий...

Как записать в файл данные очень быстро??

Записываю данными файл csv, строк 1.000.000. Для этого использую bufferewriter. Если записывать 1000 строк происходит быстро, если 10.000, то вообще медленно. Как можно ускорить процесс?
  • Вопрос задан
  • 289 просмотров
Решения вопроса 2
And3en
@And3en
Software Engineer at Luxoft
В любом случае быстро не получится, так как это IO операция на диске. Многое зависит от самого диска.
Рекомендую попробовать Memory Mapped Files, но нужно знать сколько вы будете писать для того что бы зарезервировать место.
byte[] buffer = new byte[4096];
int numOfLines = 1000000;

FileChannel rwChannel = new RandomAccessFile("textfile.txt", "rw").getChannel();
ByteBuffer wrBuf = rwChannel.map(FileChannel.MapMode.READ_WRITE, 0, buffer.length * numOfLines);
for (int i = 0; i < numOfLines; i++)
{
    wrBuf.put(buffer);
}
rwChannel.close();
Ответ написан
Комментировать
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Используй FileWriter , если хочется еще быстрее то FileChannel.
Еще сильное замедление дают операции со строковым типом, в таком случае лучше переписать все на массивы чаров.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы