Программирование на JAVA

Навигация

Лекция 1. Что такое Java? История создания

Лекция 2. Основы объектно-ориентированного программирования

Лекция 3. Лексика языка

Лекция 4. Типы данных

Лекция 5. Имена. Пакеты

Лекция 6. Объявление классов

Лекция 7. Преобразование типов

Лекция 8. Объектная модель в Java

Лекция 9. Массивы

Лекция 10. Операторы и структура кода. Исключения

Лекция 11. Пакет java.awt

Лекция 12. Потоки выполнения. Синхронизация

Лекция 13. Пакет java.lang

Лекция 14. Пакет java.util

Лекция 15. Пакет java.io

Лекция 16. Введение в сетевые протоколы

Реклама :





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

Если же мы изначально хотим заполнить не весь массив, а только ею часть, то для этих целей используется метод read(), которому, кроме масси­ва byte[], передаются еще два int значения. Первое - это позиция в масси­ве, с которой следует начать заполнение, второе — количество байт, которое нужно считать. Такой подход, когда для получения данных передается мас­сив и два int числа — offset (смещение) и length (длина), является довольно распространенным и часто встречается не только в пакете java.io.

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

Чтобы узнать, сколько байт в потоке готово к считыванию, применя­ется метод available(). Этот метод возвращает значение типа int, которое показывает, сколько байт в потоке готово к считыванию. При этом не сто­ит путать количество байт, готовых к считыванию, с тем количеством байт, которые вообще можно будет считать из этого потока. Метод available() возвращает число - количество байт, именно на данный момент готовых к считыванию.

Когда работа с входным потоком данных окончена, его следует за­крыть. Для этого вызывается метод close(). Этим вызовом будут освобож­дены все системные ресурсы, связанные с потоком.

Точно так же, как InputStream - это базовый класс для потоков ввода, класс OutputStream - это базовый класс для потоков вывода.

В классе OutputStream аналогичным образом определяются три ме­тода write() — один принимающий в качестве параметра int. второй -byte[] и третий - byte[], плюс два int-числа. Все эти методы ничего не возвращают (void).

Метод write(int) является абстрактным и должен быть реализован в классах-наследниках. Этот метод принимает в качестве параметра int, но реально записывает в поток только byte — младшие 8 бит в двоичном представлении