Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
int count = inFile.read(bytesReaded,0,bytesAvailable); System.out.рппт1п("Считано:" + count + " байт"); for (int i=0; kcount; i++)
System .out. print(bytesReaded [i]+","); System.out.println(); inFile.close();
System.о^.рпп:1п("Входной поток закрыт"); } catch (FileNotFoundException e) {
System.out.рпппп("Невозможно произвести запись в файл: " + fileName); } catch (lOException e) {
System.out.рппг1п("Ошибка ввода/вывода:" + e.toString());
Результатом работы программы будет:
файл открыт для записи Записано: 3 байт Выходной поток закрыт Файл открыт для чтения Готово к считыванию: 3 байт
Считано: 3 байт 1,2,3,
Входной поток закрыт
При работе с FilelnputStream метод available() практически наверняка вернет дпину файла, то есть число байт, сколько вообще из него можно считать. Но не стоит закладываться на это при написании программ, которые должны устойчиво работать на различных платформах,— метод available() возвращает число байт, которое может быть на данный момент считано без блокирования. Тот факт, что, скорее всего, это число и будет длиной файла, является всего лишь частным случаем работы на некоторых платформах.
В приведенном примере для наглядности закрытие потоков производилось сразу же после окончания их использования в основном блоке. Однако лучше закрывать потоки в finally блоке.
} finally {
try{inFile.close();}catch(IOException е){}; }
Такой подход гарантирует, что поток будет закрыт и будут освобождены все связанные с ним системные ресурсы.
PipedlnputStream и PipedOutputStream
Классы PipedlnputStream и PipedOutputStream характеризуются тем, что их объекты всегда используются в паре - к одному объекту PipedlnputStream привязывается (подключается) один объект PipedOutputStream. Они могут быть полезны, если в программе необходимо организовать обмен данными между модулями (например, между потоками выполнения).
Эти классы применяются следующим образом: создается по объекту PipedlnputStream и PipedOutputStream, после чего они могут быть соединены между собой. Один объект PipedOutputStream может быть соединен с ровно одним объектом PipedlnputStream, и наоборот. Затем в объект PipedOutputStream записываются данные, после чего они могут быть считаны именно в подключенном объекте PipedlnputStream