Как вы думаете, почему язык Java предпочитает обрабатывать данные файла как поток, а не как один объект? - PullRequest
4 голосов
/ 17 декабря 2011

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

Ответы [ 5 ]

8 голосов
/ 17 декабря 2011

Рассмотрите возможность загрузки файла 4 ГБ в ваше приложение как объект ....

Если этого недостаточно, рассмотрите одновременную обработку 50 таких файлов и подумайте, сколько памяти потребуется.

Кстати, существует класс высокого уровня File для выполнения операций высокого уровня.

1 голос
/ 17 декабря 2011

Java также может «обрабатывать» входной поток как объект, если вы скажете ему, что это за объект.

ObjectInputStream objectInput = new ObjectInputStream(new FileInputStream(filepath));
MyObject myobject = (MyObject) objectInput.readObject();

Вот базовое руководство по потокам ввода / вывода: http://docs.oracle.com/javase/tutorial/essential/io/streams.html

1 голос
/ 17 декабря 2011

Файловая система Unix является источником этой идеи.Стандартный ввод, стандартный вывод и стандартная ошибка обрабатываются как потоки:

Файл - это просто поток данных - один байт за другим без внутренней структуры, навязанной Unix.Программы интерпретируют, как разделить этот поток на строки, записи или поля.

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

1 голос
/ 17 декабря 2011

Ответ зависит от того, как вы определяете «поток» и «отдельный объект».

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

0 голосов
/ 17 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...