Государственный


Чтение файлов и класс FileInputStream



бет6/25
Дата05.04.2024
өлшемі4.07 Mb.
#497748
1   2   3   4   5   6   7   8   9   ...   25
Java. Потоки ввода-вывода. Работа с файлами. Кравчук А.С., Кравчук А.И., Кремень Е.В

Чтение файлов и класс FileInputStream


FileInputStream предназначен для чтения потоков байтов, таких, например, как данные изображения. Он является наследником класса InputStream и поэтому реализует все его методы.
Для создания объекта FileInputStream можно использовать ряд конструкторов. Наиболее используемая версия конструктора в качестве параметра принимает путь к считываемому файлу:


FileInputStream(String fileName) throws
FileNotFoundException

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




Пример.

Результат работы программы:

В данном случае в программе считывается каждый отдельный байт в переменную i с помощью инструкции:


while((i = fin.read())!=-1){


Когда в потоке больше нет данных для чтения, метод read()


возвращает число -1.
Затем каждый считанный байт конвертируется в объект типа char и выводится на консоль. Если явное преобразование типов не выполнять, используя код цикла в виде:

while((i = fin.read()) != -1) {


System.out.print(i + " ");
},

то на экране отобразятся коды символов:


Можно также считать данные в массив байтов и затем производить с ним манипуляции:




byte[] buffer = new byte[fin.available()];
// считаем файл в буфер fin.read(buffer, 0, fin.available());
System.out.println("Содержимое файла:"); for(int i = 0; i < buffer.length; i++){

System.out.print((char) buffer[i]);


}

Объединим оба примера и выполним чтение из одного (notes.txt) и запись в другой (notes_new.txt) файл.


Пример.



Замечание.
При выполнении программы в среде OnlineGDB даже если разработчик не создал предварительно файл notes_new.txt самостоятельно, то он будет создан автоматически в новой закладке (содержимое файла можно просмотреть):



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


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   25




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет