Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Простейшие методы




Исключения при создании потоков, связанных с файлами.

Добавление буферизации.

В случае, если необходим не простой выходной или входной поток, а буферизированный, необходимо еще воспользоваться классом BufferedOutputStream или BufferedIntputStream. Вот два конструктора, предусмотренные, например, в классе BufferedOutputStream:

public BufferedOutputStream(OutputStream out);

public BufferedOutputStream(OutputStream out, int size);

Первый из них создает буферизированный выходной поток на базе потока класса OutputStream, а второй делает то же самое, но дополнительно позволяет указать размер буфера в байтах

Если необходимо создать выходной буферизированный поток для записи форматированных данных, связанный с файлом, то создание потока выполняется в три приема:

· создается поток, связанный с файлом, как объект класса FileOutputStream;

· ссылка на этот поток передается конструктору класса BufferedOutputStream, в результате чего образуется буферизированный поток, связанный с файлом;

· ссылка на буферизированный поток, созданный на предыдущем шаге, передается конструктору класса DataOutputStream, который и создает нужный поток.

Вот фрагмент исходного текста программы, который создает выходной буферизированный поток для записи форматированных данных в файл output.txt:

DataOutputStream dataOut;

dataOut=new DataOutputStream(

new BufferedOutputStream(

new FileOutputStream("output.txt")));

Для создания входного буферизированного потока форматированных данных из файла следует пользоваться классами FileInputStream, BufferedIntputStream и DataInputStream, действуя по аналогичной методике.

При создании потоков на базе класса FileOutputStream или FileInputStream могут возникать исключения FileNotFoundException (попытка открыть входной поток данных для несуществующего файла), SecurityException (попытка открыть файл, для которого запрещен доступ, например, попытка открытия файла с атрибутом read-only для записи) и IOException (если файл не может быть открыт для записи по каким-либо другим причинам).

2.3.2 Запись данных в поток и чтение их из потока

Для обмена данными с потоками можно использовать как методы write() и read(), так и методы, допускающие ввод или вывод форматированных данных. В зависимости от того, на базе какого класса создан поток, зависит набор доступных методов, предназначенных для чтения или записи данных.

Для выходного потока на базе класса FileOutputStream можно использовать для записи в него 3 разновидности метода write():

· public void write(byte b[]) - записывает в поток содержимое массива (длиной b.length байт), ссылка на который передается через параметр, начиная с текущей позиции в потоке (после выполнения текущая позиция продвигается вперед).

· public void write(byte b[], int off, int len) - позволяет дополнительно указать начальное смещение off записываемого блока данных в массиве и колтчество записываем байт len массива.

· public void write(int b) - просто записывает в поток 1 байт данных.

Если в процессе записи происходит ошибка, то возникает исключение IOException.

Для входного потока на базе класса FileInputStream можно использовать для чтения из него 3 разновидности метода read():

· public int read() - просто читает из потока 1 байт данных. Если достигнут конец файла, товозвращается значение -1.

· public int read(byte b[]) - читает данные в массив, причем количество прочитанных данных определяется размером массива (b.lenght байтов). Метод возвращает количество прочитанных байтов данных или значение -1, если в процессе чтения был достигнут конец файла.

· public int read(byte b[], int off, int len) - читает данные в область массива, заданную своим смещением и длиной.

Если в процессе чтения происходит ошибка, то возникает исключение IOException.




Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 402; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.