Это будет мой первый проход, при условии, что память не является проблемой (га).
- Получите размер файла, который находится на диске (File.length).
- Выделите буфер этого размера.
- Загрузите всю вещь за один кадр (InputStream.read (byte [])).
- Разбейте эту строку на подстроки полностью в памяти.
- Do Stuff (tm)
- Обратное выше для сохранения.
Имейте в виду, что Java хранит символьные данные внутри UCS-16 внутри, что означает, что ваш хороший файл ASCII собираетсявзять x2 размер на диске, чтобы учесть «расширение».Например, у вас есть файл размером 4 124 байт, файл foo.txt будет иметь по крайней мере 8 248 байт в памяти.
Все остальное будет медленнее, поскольку приложение будет разработано для работы с некоторой буферизацией и переносом (вв частности, чтобы справиться с нехваткой памяти, чтобы справиться с размером файла).
Удачи!