Всегда хорошо не изобретать колеса.
Apache предоставил прекрасную библиотеку для выполнения операций ввода-вывода. Взгляните на http://commons.apache.org/io/description.html
Вот сценарий, которому он служит. Предположим, у вас есть некоторые данные, которые вы
предпочитаю хранить в памяти, но заранее не знаешь, сколько данных
там будет. Если их слишком много, вы хотите записать их на диск
вместо загрузки памяти, но вы не хотите записывать на диск, пока вы
необходимо, потому что диск медленный и является ресурсом, который требует отслеживания для
очистки.
Итак, вы создаете временный буфер и начинаете запись в него. Если / когда ты
достичь порога того, что вы хотите сохранить в памяти, вам нужно
создайте файл, запишите, что находится в буфере для этого файла, и запишите все
последующие данные в файл вместо буфера.
Вот что DeferredOutputStream делает для вас. Он прячет всю грязь
вокруг в точке переключения. Все, что вам нужно сделать, это создать
отложите поток в первую очередь, настройте порог, а потом просто
напишите в свое удовольствие.
РЕДАКТИРОВАТЬ: я только что сделал небольшой повторный поиск с помощью Google и нашел эту ссылку:
http://lists.apple.com/archives/java-dev/2004/Apr/msg00086.html
(Молниеносное чтение / запись файла). Очень впечатляет.