33 Java. Потоки ввода-вывода. Работа с файлами. Белорусский государственный экономический университет кафедра экономической информатики
Скачать 1.6 Mb.
|
Чтение файлов и класс 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 предназначены прежде всего для записи двоичных файлов, то есть для записи и чтения байтов. И хотя (как показывают примеры) они также могут использоваться для работы с текстовыми файлами, но все же для этой задачи больше подходят другие классы. |