Java.io использует дизайн -шаблоны, такие как декоративный режим режима адаптера для решения задач ввода и ввода и вывода потоков символов.
Поток байтов может обрабатывать только один байт за раз, и для того, чтобы облегчить эксплуатацию данных, добавляется поток сокета.
Проблема Введение:
Почему буферированный поток более эффективен, чем обычные потоки байтов?
Для операций без буферизации один байт должен быть записан для каждого чтения байта.
Поскольку операции ввода -вывода, включающие диски, намного медленнее, чем операции памяти, потоки без буферизации очень неэффективны.
Поток с буфером может читать много байтов за раз, но не пишет на диск, но сначала находится в памяти.
Когда у вас достаточно размер буфера, напишите его на диск за один раз. Этот метод может уменьшить количество дисковых операций, и скорость будет намного выше!
Это разница между двумя.
Наверное, процесс:
Если нет кеша, то каждый раз, когда вы читаете, будет отправлена операция IO;
Есть кеш -зона. Когда вы читаете в первый раз, x байты будут прочитать и поместить в область кэша. Затем последующие чтения будут прочитаны из кеша. Когда вы читаете до конца области кеша, x байты будут прочитаны снова и будут помещены в область кэша.
Очевидно, что второй метод уменьшит операции ввода -вывода и будет более эффективным. Недостатком является то, что он потребляет больше памяти.
Входные и выходные потоки Java разработаны с использованием многослойной инкапсуляции
На самом низком уровне inputstream и outputstream основаны на байтовых потоках и не имеют механизма кеша. Они обычно инкапсулируют и используются после использования с помощью Bufferinptstream и BufferoutputStream.
Метод считывания BufferinptStream блокирует поток. BufferinputStream.read (BUF) будет читать весь входной поток в BUF перед возвращением.
Bufferoutputstream.write (buf); выведет содержимое в BUF в выходной поток, но не забудьте промыть;
Существует также относительно простой в использовании PrintStream и PrintWriter, который может быть автоматически обновлен, но для байтовых потоков.
Потоки байтов обычно используются для передачи двоичных файлов и других потоков символов. Они часто обернуты читателем.
Наиболее часто используемыми являются BufferinptStreamReader и PrintWrinter. Метод считывания BufferinputStreamReader очень практичен и будет автоматически промывать при столкновении /R /D.
PrintWrinter До тех пор, пока свойство обновления установлено на True в конструкторе, его метод Println может быть автоматически обновляться без промывки.
FilterInputStream и FilterOutputStream: Поток фильтров, буферный поток и поток данных отсюда унаследованы.
Для буферных потоков данные будут по -настоящему перенесены в выходной поток только тогда, когда буфер заполнен, но метод flush () может использоваться для отправки данных из незаполненного буфера искусственно; Метод кодирования файла не может быть определен, и его трудно применить в сети.
Наиболее часто используется на практике, это то, что поток данных может позволить отправителю и получателю обрабатывать в соответствии с тем же кодированием.
DataInputStream и DataOutputStream: может принять строку данных, может кодировать их, или это может быть поток сокета, может быть поток байтового байта и сетевого байта, и порядок чтения и записи должен быть согласованным, в противном случае исключение будет происходить при чтении.
DataInputStream используется для украшения других входных потоков, что «позволяет приложениям считывать основные типы данных Java из базового входного потока независимым от машины». Приложения могут использовать DataOutputStream для записи данных считыванием данных DataInputStream.
Выше представлено входной и выходной поток входного потока Java.io и потоком данных и потоком данных, введенный редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!