Разница между пакетами io и nio inputstream от читалки

Обновлено: 21.11.2024

Хорошее знание Java IO API важно для любого Java-разработчика, но многие из них почти не обращают внимания на Java IO и NIO API, и поэтому они часто испытывают затруднения во время собеседований по Java, когда им задают вопрос, связанный с операцией ввода-вывода. В прошлом я задавал много вопросов к собеседованиям по Java по таким темам, как коллекции, параллелизм, внутреннее устройство JVM, сборка мусора, ООП, шаблоны проектирования и проблемы кодирования на основе структуры данных, которые получили хорошие отзывы и помогли многим разработчикам Java при подготовке к собеседованию по Java. . Следовательно, многие из моих читателей также задавали вопросы о Java IO и вопросах интервью на основе файлов, и это было одним из нерешенных вопросов в моем списке TODO в течение довольно долгого времени.

Одна из причин задержки заключалась в том, что я хотел создать действительно большой пост с более чем 100 вопросами и ответами в одном месте, точно так же, как я сделал это ранее для вопросов для интервью по Core Java, но этого не произошло. этого не произошло, и этот пост застрял.

В этом году я пытаюсь избавиться от всех этих невыполненных работ, поэтому я решил использовать множество подробных статей о Java IO и NIO, которыми я поделился в своем блоге Javarevisited и Java67, и таким образом я могу по крайней мере опубликовать это. опубликовать и улучшить на основе обратной связи. Он больше не будет оставаться черновиком и потенциально может быть полезен разработчикам Java, которые ищут вопросы для интервью Java IO.

Если вам интересно, что такое Java IO или Java NIO, позвольте мне дать вам краткий обзор. Java IO — это не что иное, как набор классов, которые помогут вам справиться с чтением ввода и записью вывода, таких как File , Directory , InputStream , OutputStream , Reader , Writer , BufferedReader , BufferedWriter , Scanner и т. д.

В основном они взяты из пакета java.io, который является основным пакетом JDK, но не импортируется автоматически как java.lang . Этот пакет появился с самого начала JDK, а еще один пакет java.nio был введен для улучшения и ускорения операций ввода-вывода. Это называется New Input-Output или просто пакетом N-I-O. Он содержит такие классы, как Channel , ByteBuffer , FileChannel , Selector, которые поддерживают мультиплексирование и асинхронный ввод-вывод.

Хорошее знание всех этих классов является обязательным для любого разработчика Java, и если вы чувствуете, что еще не касались их или не имеете достаточного опыта работы с ними, я предлагаю вам записаться на всеобъемлющий курс Java, например The Complete Java Masterclass. Тимом Бучалакой на Udemy, чтобы изучить их более подробно. Они не только помогут вам писать более качественные Java-приложения, но и очень помогут вам во время собеседований по Java и дадут вам преимущество перед другими кандидатами.

42 основных вопроса о вводе-выводе и файлах Java с ответами

В этой статье я поделюсь с вами некоторыми популярными вопросами для собеседования на основе Java IO. Какие-то из них простые, какие-то сложные, какие-то сложные, а какие-то действительно сложные вопросы. Если вы работали разработчиком Java в течение 2-3 лет, то, скорее всего, вы можете ответить на 60% этих вопросов, но если вы не можете, то это тоже хорошо, потому что многие разработчики Java не работают над вводом-выводом, как в основном другие. старшие разработчики.

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

В любом случае, не теряя вашего времени, вот мой список некоторых часто задаваемых вопросов на собеседовании по Java IO:

<р>
1. Какой класс используется для создания каталога в Java? (ответ)
Это сложно, потому что нет класса Directory, класс File используется для создания как файла, так и каталога в Java. Вы можете увидеть связанный ответ для более подробной информации.

<р>2. Как создать файл и каталог в Java? (ответ)

<р>3. В чем разница между InputStream и OutputStream в Java? (ответ)
InputStream используется для чтения данных из таких источников, как File, Socket или Console, а OutputStream используется для записи данных в место назначения, например File, Socket или Conole.

<р>4. Можете ли вы создать символическую ссылку из программы Java на поддерживаемых платформах, таких как UNIX? (ответ)

<р>5. В чем разница между FileInputStream и FileReader в Java IO? (ответ)

<р>6. В чем разница между BufferedReader и FileReader в Java? (ответ)
BufferedReader — это декоратор, который обеспечивает буферизацию для более быстрого ввода-вывода, а FileReader используется для чтения данных из файла.

<р>7. В чем разница между BufferedReader и Scanner в Java? (ответ)

<р>8. В чем разница между Scanner и FileReader в Java? (ответ)

<р>9. Какая польза от класса PrintStream в Java IO? (ответ)
PrintStream используется для записи данных в консоль, например, System.out.println(), здесь out является объектом класса PrintStream, и мы вызываем метод println() из этого класса.

<р>10. Как правильно закрыть потоки в Java?(ответ)
Перепроверьте, не забыли ли вы обработать исключение при закрытии потока. Подробное объяснение см. в связанном ответе.

<р>11. Почему вам нужно закрывать потоки в блоке finally? (ответ)
Это связано с предыдущим вопросом, и мы делаем это, потому что блок finally всегда выполняется независимо от исключения в блоке try или нет.

<р>12. Зачем вам нужен отдельный блок try-catch внутри, чтобы, наконец, закрыть потоки ввода и вывода? (ответ)

<р>13. Какой дескриптор файла? (ответ)

14. Можем ли мы контролировать каталог для добавления новых файлов в Java? (ответ)

<р>15. Как вы обрабатываете большой файл в Java? (ответ)

<р>16. Что такое оператор try-with-resource в Java? (ответ)

<р>17. Как преобразовать файл в строку в Java? (ответ)

18. Как скопировать файл в Java? (ответ)

<р>19. Как вы проверяете разрешение файла или каталога в Java? (ответ)

<р>20. Как изменить разрешение файла в Java? (ответ)

21. Можете ли вы открыть ZIP-файл в Java? Как? (ответ)

22. В чем разница между ZipFile и ZipInputStream? (ответ)

23. Когда возникает java.io.FileNotFoundException: (Доступ запрещен)? Как это исправить? (ответ)

24. Как вы добавляете текст в существующий файл в Java? (ответ)

25. Как вы получаете кодировку символов по умолчанию в Java? (ответ)

26. Можно ли удалить каталог с файлами в Java? Как? (ответ)

27. Что такое файл с отображением памяти в Java? (ответ)


28. Как вы читаете файл построчно в Java? (ответ)

29. Как проверить, скрыт ли файл в Java? (ответ)

<р>30. В чем разница между getPath(), getCanonicalPath() и getAbsolutePath() в Java? (ответ)

31. Как вы конвертируете InputStream в String в Java? (ответ)

32. Можем ли мы загрузить ресурс из ClassPath в Java? (ответ)

33. Как вы читаете файл XML в Java как строку? (ответ)

34. Можем ли мы прочитать файл Microsoft Excel (XLS и XLSX) на Java? Как? (ответ)

35. Как вы загружаете файл CSV в Java? (ответ)

36. Как вы читаете файл свойств в Java? (ответ)

37. Как вы сериализуете объект в Java? (ответ)
подсказка: с помощью классов ObjectInputStream и ObjectOutputStream

38. В чем разница между FileInputStream и ObjectInputStream в Java? (ответ)

39. Как вы читаете/пишете текстовый файл в Java? (ответ)

40. Как загрузить файл на веб-сервер в Java? (ответ)

41. Как вы читаете файл построчно в Java 8? (ответ)

42. Что такое RandomAccessFile? В чем преимущество использования RandomAccessFile? (ответ)

43. Как вы конвертируете InputStream в ByteArray в Java? (ответ)


Это все, что касается некоторых часто задаваемых вопросов о Java IO и файлах/каталогах на собеседованиях. Это полезно не только с точки зрения интервью, но и в вашей повседневной работе. Когда вы научитесь делать такие вещи, вам не нужно будет искать в Google свои повседневные задачи, и вы сможете выполнять их за меньшее время.

  • 101 проблема кодирования для собеседования и несколько советов (вопросов)
  • 50+ вопросов для собеседования по Java для начинающих (вопросы)
  • 10 главных вопросов интервью с Spring Framework с ответами (см. здесь)
  • 10 XML-вопросов для интервью с Java-программистами (читать здесь)
  • 20 вопросов по шаблонам проектирования Java, заданных на собеседованиях (см. здесь)
  • 10 популярных вопросов для собеседования по Struts для разработчиков Java (список)
  • 10 часто задаваемых вопросов об интервью с сервлетами с ответами (см. здесь)
  • 10 вопросов для интервью по Hibernate для разработчиков Java EE (см. здесь)
  • 10 вопросов для интервью JDBC для Java-программистов (вопросы)
  • 20 вопросов для интервью по jQuery для веб-разработчиков Java (список)
  • 10 вопросов для собеседования с Oracle для разработчиков Java (см. здесь)
  • 10 главных вопросов JSP из интервью J2EE (читать здесь)
  • 12 вопросов о веб-сервисах RESTful из интервью (читать здесь)
  • 10 основных вопросов и ответов на собеседованиях по JMS и MQ (список)
  • 15 вопросов для собеседования по Java NIO и работе с сетями с ответами (см. здесь)
  • 10 лучших вопросов для интервью XSLT с ответами (подробнее)
  • 15 вопросов о структуре данных и алгоритмах из интервью по Java (читать здесь)
  • 10 лучших вопросов и ответов на собеседовании по Trick Java (см. здесь)
  • Топ-40 основных вопросов для собеседования по Java по телефону с ответами (список)

Спасибо, что прочитали эту статью.Если вам нравятся эти вопросы Java Interview по API файлов и каталогов, поделитесь ими со своими друзьями и коллегами. Если у вас есть какие-либо вопросы или отзывы, напишите об этом.

П. S. - Если вы только начинаете работать с Java и ищете бесплатные курсы для изучения Java с нуля, я предлагаю вам ознакомиться с этим курсом Java Tutorial for Complete Beginners (БЕСПЛАТНО) на Udemy, чтобы начать свое путешествие. Это совершенно бесплатно, и более 1,2 миллиона человек присоединились к этому курсу для изучения Java.

Java New input/output (NIO) появился в JDK 1.4. Развивая стандартные операции ввода-вывода, NIO обеспечивает высокоскоростной блочный ввод-вывод для библиотеки Java.

Определяя классы для хранения данных и обрабатывая эти данные в блоках, NIO использует низкоуровневую оптимизацию, чего не мог сделать пакет java.io без использования собственного кода.

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

Отзыв стандартного ввода-вывода

Под вводом-выводом Java понимается интерфейс между компьютером и остальным миром или между отдельной программой и остальной частью компьютера.

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

Stream IO используется для связи с внешним миром. Он также используется внутри для преобразования объектов в байты, а затем обратно в объекты. Это называется сериализацией и десериализацией.

Представляем Java New IO

Java NIO был создан, чтобы позволить Java-программистам реализовывать высокоскоростные операции ввода-вывода без необходимости написания собственного собственного кода.

NIO перемещает наиболее трудоемкие операции ввода-вывода (а именно заполнение и опустошение буферов) обратно в операционную систему, что позволяет значительно увеличить скорость.

Если приведенные выше сведения вызвали у вас жажду, не волнуйтесь, почувствуете ли вы себя лучше, когда мы будем двигаться вперед. Начнем с поиска различий.

Различия между IO и NIO

Потоки ввода-вывода и блоки NIO

Самое важное различие между стандартной библиотекой ввода-вывода ( java.io.* ) и новой библиотекой ввода-вывода ( java.nio.* ) заключается в том, как данные упаковываются и передаются от источника к цели. Как упоминалось ранее, стандартный ввод-вывод работает с данными в потоках, а NIO — с данными в блоках.

Система ввода-вывода с потоковой ориентацией обрабатывает данные по одному или нескольким байтам за раз. Входной поток создает один байт данных, а выходной поток потребляет один байт данных. Очень легко создавать фильтры для потоковой передачи данных. Также относительно просто соединить несколько фильтров вместе, чтобы каждый из них выполнял свою роль в едином сложном механизме обработки.

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

Блочно-ориентированная система ввода-вывода работает с данными в блоках. Каждая операция создает или потребляет блок данных за один шаг. Обработка данных блоком может быть намного быстрее, чем обработка их (потоковым) байтом. Вы можете перемещаться вперед и назад в буфере по мере необходимости.

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

С другой стороны, блочно-ориентированному вводу-выводу не хватает элегантности и простоты потокового ввода-вывода.

Синхронный стандартный и асинхронный новый ввод-вывод

Различные потоки Java IO блокируются или синхронизируются. Это означает, что когда поток вызывает операцию чтения() или записи(), этот поток блокируется до тех пор, пока не появятся данные для чтения или данные не будут полностью записаны. Поток будет в заблокированном состоянии в течение этого периода. Это было названо веским аргументом в пользу внедрения многопоточности в современные языки.

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

Синхронным программам часто приходится прибегать к опросу или созданию множества потоков для работы с большим количеством подключений. С помощью асинхронного ввода-вывода вы можете прослушивать события ввода-вывода на произвольном количестве каналов без опроса и без дополнительных потоков.

Центральный объект асинхронного ввода-вывода называется селектором. Селектор — это место, где вы регистрируете свой интерес к различным событиям ввода-вывода, и это объект, который сообщает вам, когда эти события происходят. Итак, первое, что нам нужно сделать, это создать селектор.

Позже мы будем вызывать метод register() для различных объектов Channel, чтобы зарегистрировать нашу заинтересованность в событиях ввода-вывода, происходящих внутри этих объектов. Первым аргументом функции register() всегда является Selector .

Java IO и NIO API

Бесполезно предположить, что вызовы API при использовании NIO выглядят иначе, чем при использовании IO. Здесь, в NIO, вместо того, чтобы просто читать байт данных за байтом, например. InputStream , данные должны быть сначала прочитаны в Buffer , а затем обработаны оттуда.

Пример Java для чтения файла с использованием стандартного ввода-вывода.

Пример Java для чтения файла с помощью New IO.

Заключение

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

Если вам нужно одновременно управлять тысячами открытых подключений, каждое из которых отправляет только небольшое количество данных, например сервер чата, реализация сервера в NIO, вероятно, будет преимуществом. Точно так же, если вам нужно поддерживать много открытых подключений к другим компьютерам, например. в сети P2P использование одного потока для управления всеми вашими исходящими соединениями может быть преимуществом.

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

Учебное пособие по Java InputStream показывает, как работать с классом InputStream в Java.

это поток данных из источника или в пункт назначения. Хорошая метафора для Java-потоков — вода, текущая из крана в ванну, а затем в канализацию. InputStream и OutputStream — это абстракции над низкоуровневым доступом к данным, таким как указатели файлов C.

Входной поток Java

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

Потоки поддерживают множество различных типов данных, включая простые байты, примитивные типы данных, локализованные символы и объекты.

Подклассы Java InputStream

InputStream — это абстрактный класс; это суперкласс для всех классов, представляющих входной поток байтов, включая AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, ObjectInputStream, PipedInputStream и SequenceInputStream.

Java InputStream закрыть

Метод close класса FileInputStream закрывает входной поток и освобождает все системные ресурсы, связанные с этим потоком. В наших примерах мы используем оператор try-with-resources, который гарантирует, что каждый ресурс будет закрыт в конце оператора.

Чтение Java InputStream

InputStream считывает байты следующими методами чтения:

  • read(byte[] b) — считывает до b.length байтов данных из этого входного потока в массив байтов.
  • read(byte[] b, int off, int len) — считывает до len байтов данных из этого входного потока в массив байтов.
  • read — читает один байт из входного потока файла.

Java InputStream читать текст

В следующем примере показано, как читать текстовый файл с помощью InputStream .

В примере мы используем этот текстовый файл.

Текстовый файл читается с помощью FileInputStream , InputStreamReader и BufferedReader .

FileInputStream — это специализация InputStream для чтения байтов из файла.

InputStreamReader — это мост от потоков байтов к потокам символов: он считывает байты и декодирует их в символы, используя указанный набор символов.

BufferedReader считывает текст из потока ввода символов, буферизуя символы для эффективного чтения символов, массивов и строк.

Данные считываются по строкам из буферизованного считывателя.

Чтение байтов Java InputStream

Методы чтения байтов чтения InputStream.

В этом примере байты считываются из изображения PNG и выводятся на консоль байты в шестнадцатеричном формате.

Мы используем FileInputStream для чтения байтов из файла изображения.

С помощью метода чтения мы считываем байты в массив байтов.

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

Это частичный образец вывода примера.

Java InputStream считывается из URL

InputStream позволяет считывать данные из источника URL.

В этом примере объект InputStream открывается на веб-странице и считывается его данные.

InputStream для URL создается с помощью метода openStream.

Java InputStream считывает десериализованные данные

ObjectInputStream считывает сериализованные данные, ранее записанные с помощью ObjectOutputStream .

Это фасоль Country.Мы собираемся сериализовать и десериализовать список стран.

В примере сериализуется список объектов.

Список стран записывается в ObjectOutputStream .

Мы используем ObjectInputStream для чтения сериализованных данных.

Java InputStream считывает последовательность потоков

SequenceInputStream представляет последовательность входных потоков. Это позволяет читать из нескольких упорядоченных потоков.

В примере читаются три потока FileInputStream .

Мы определяем три входных потока, и эти потоки помещаются в SequenceInputStreams.

InputStreamReader — это мост между потоками байтов и потоками символов: он считывает байты и декодирует их в символы с использованием указанного набора символов . Используемый набор символов может быть указан по имени или может быть указан явно, или может быть принят набор символов платформы по умолчанию.

Каждый вызов одного из методов read() объекта InputStreamReader может привести к чтению одного или нескольких байтов из базового потока ввода байтов. Чтобы обеспечить эффективное преобразование байтов в символы, из базового потока может быть прочитано больше байтов, чем необходимо для выполнения текущей операции чтения.

Для максимальной эффективности рекомендуется обернуть InputStreamReader внутри BufferedReader. Например:

Сводка по полю

Поля, унаследованные от класса java.io.Reader

Сводка конструктора

Краткое описание метода

Все методы Экземпляры Методы Конкретные методы
Модификатор и тип Метод и описание
void close()

Методы, унаследованные от класса java.io.Reader

Методы, унаследованные от класса java.lang.Object

Сведения о конструкторе

InputStreamReader

InputStreamReader

InputStreamReader

InputStreamReader

Сведения о методе

получить кодировку

Если кодировка имеет историческое имя, возвращается это имя; в противном случае возвращается каноническое имя кодировки.

Если этот экземпляр был создан с помощью конструктора InputStreamReader(InputStream, String), то возвращаемое имя, уникальное для кодировки, может отличаться от имени, переданного конструктору. Этот метод вернет значение null, если поток был закрыт.

готов

Сообщает, готов ли этот поток для чтения. Объект InputStreamReader готов, если его входной буфер не пуст или доступны байты для чтения из базового потока байтов.

закрыть

Закрывает поток и освобождает все связанные с ним системные ресурсы. Как только поток будет закрыт, дальнейшие вызовы read(), ready(), mark(), reset() или skip() вызовут исключение IOException. Закрытие ранее закрытого потока не имеет никакого эффекта.

  • Обзор:
  • Вложенные | | |
  • Подробности:
  • Поле | |

Сообщите об ошибке или функции.
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации по Java SE. Эта документация содержит более подробные описания, предназначенные для разработчиков, с концептуальными обзорами, определениями терминов, обходными путями и примерами рабочего кода.
Авторские права © 1993, 2022, Oracle и/или ее дочерние компании. Все права защищены. Использование регулируется условиями лицензии. Также ознакомьтесь с политикой распространения документации.

Этот класс определяет статические методы, поддерживающие взаимодействие классов потоков пакета java.io с классами каналов этого пакета.

Краткое описание метода

Методы
Модификатор и тип Метод и описание
static ReadableByteChannel newChannel(InputStream in)

Создает модуль записи, который кодирует символы с помощью заданного кодировщика и записывает полученные байты в заданный канал.

Создает средство записи, которое кодирует символы в соответствии с именованным набором символов и записывает полученные байты в заданный канал.

Методы, унаследованные от класса java.lang.Object

Сведения о методе

новый поток ввода

Методы read результирующего потока вызовут исключение IllegalBlockingModeException, если будут вызваны, когда основной канал находится в неблокирующем режиме. Поток не будет буферизоваться и не будет поддерживать методы пометки или сброса. Поток будет безопасен для доступа несколькими параллельными потоками. Закрытие потока, в свою очередь, приведет к закрытию канала.

новый поток вывода

Методы write результирующего потока вызовут исключение IllegalBlockingModeException, если будут вызваны, когда основной канал находится в неблокирующем режиме. Поток не будет буферизирован. Поток будет безопасен для доступа несколькими параллельными потоками.Закрытие потока, в свою очередь, приведет к закрытию канала.

новый поток ввода

Поток не будет буферизирован и не будет поддерживать методы пометки или сброса. Поток будет безопасен для доступа несколькими параллельными потоками. Закрытие потока, в свою очередь, приведет к закрытию канала.

новый поток вывода

Поток не будет буферизирован. Поток будет безопасен для доступа несколькими параллельными потоками. Закрытие потока, в свою очередь, приведет к закрытию канала.

новый канал

Результирующий канал не будет буферизирован; он просто перенаправит свои операции ввода-вывода в данный поток. Закрытие канала, в свою очередь, приведет к закрытию потока.

новый канал

Результирующий канал не будет буферизирован; он просто перенаправит свои операции ввода-вывода в данный поток. Закрытие канала, в свою очередь, приведет к закрытию потока.

новый читатель

Результирующий поток будет содержать внутренний входной буфер размером не менее minBufferCap байт. Методы потока read при необходимости заполняют буфер, считывая байты из основного канала; если канал находится в неблокирующем режиме, когда байты должны быть прочитаны, будет выдано исключение IllegalBlockingModeException. В противном случае результирующий поток не будет буферизирован и не будет поддерживать методы пометки или сброса. Закрытие потока, в свою очередь, приведет к закрытию канала.

новый читатель

Вызов этого метода формы

новый писатель

Создает модуль записи, который кодирует символы с помощью заданного кодировщика и записывает полученные байты в заданный канал.

Результирующий поток будет содержать внутренний выходной буфер размером не менее minBufferCap байт. Методы потока write при необходимости очищают буфер, записывая байты в базовый канал; если канал находится в неблокирующем режиме, когда байты должны быть записаны, будет выдано исключение IllegalBlockingModeException. В противном случае результирующий поток не будет буферизирован. Закрытие потока, в свою очередь, приведет к закрытию канала.

новый писатель

Создает средство записи, которое кодирует символы в соответствии с именованным набором символов и записывает полученные байты в заданный канал.

Вызов этого метода формы

  • Обзор:
  • Вложенный |
  • Поле |
  • Констр |
  • Подробности:
  • Поле |
  • Констр |

Сообщите об ошибке или функции.
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации по Java SE. Эта документация содержит более подробные описания, предназначенные для разработчиков, с концептуальными обзорами, определениями терминов, обходными путями и примерами рабочего кода.
Авторские права © 1993, 2020, Oracle и/или ее дочерние компании. Все права защищены. Использование регулируется условиями лицензии. Также ознакомьтесь с политикой распространения документации.

Читайте также: