2009-08-18 1 views
2

В комментариях к my answer about reading an entire file into memory using scala.io.Source я утверждал, что причина, по которой в Java нет метода read-whole-file-in-String, заключается в том, что он (конечно) не масштабируется относительно того, насколько большой файл и сколько кучи у тебя есть.Почему в JDK нет простых IO-utils для чтения целого файла в String?

Однако, я думаю, каждый имеет некоторый метод, как:

String contents = IOUtil.readFile(f, "utf-8"); 

и осуществление метода всего лишь несколько строк кода. Почему они не просто добавили это в JDK в первую очередь? Это моя (масштабируемость) причина, или есть какая-то другая причина, по которой она была опущена?

+4

«Почему они не просто добавили это в JDK в первую очередь?» Вы надеетесь, что один из авторов JDK ответит на этот вопрос? Или вы отказываетесь от чего-то, что вам не нравится? –

+4

Нет вопросов «почему нет X в JRE», ни один из которых не отвечает. – skaffman

+1

Но если бы это было вредно по причине, которая не очевидна, было бы интересно (и образовательным) знать, почему. – finnw

ответ

3

Поскольку файлы могут быть произвольного размера, и это просто плохая практика программирования, чтобы делать такие вещи без большого количества проверок и противовесов, чтобы убедиться, что вы не сбиваете виртуальные машины влево и вправо.

+5

System.exit() разбивает виртуальные машины влево и вправо, но это в JRE. Ключевой является надлежащая документация. – skaffman

+2

Плюс, подобные методы существуют во многих других языках, таких как Python и C#. –

+0

Я думаю, что я счастлив с JDK, заставляя программистов (предположительно) думать о процессе, а не «Здесь, назовите это и уничтожьте всю свою память!» – MattC

2

Я думаю, что ваш собственный ответ правильный. Что делать, если ваш файл имеет длину 1 ГБ?

 Смежные вопросы

  • Нет связанных вопросов^_^