Главная страница

33 Java. Потоки ввода-вывода. Работа с файлами. Белорусский государственный экономический университет кафедра экономической информатики


Скачать 1.6 Mb.
НазваниеБелорусский государственный экономический университет кафедра экономической информатики
Дата06.01.2023
Размер1.6 Mb.
Формат файлаdocx
Имя файла33 Java. Потоки ввода-вывода. Работа с файлами.docx
ТипЛитература
#874813
страница4 из 13
1   2   3   4   5   6   7   8   9   ...   13

Чтение файлов и класс 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]);

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

файл.
Пример.



Замечание.

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


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


1   2   3   4   5   6   7   8   9   ...   13


написать администратору сайта