Чтение и запись файлов. FileInputStream и FileOutputStream
Класс FileOutputStream предназначен для записи потоков необработанных байтов, таких, например, как данные изображения. Он является производным от класса OutputStream, поэтому наследует всю его функциональность.
С помощью конструктора класса FileOutputStream задается файл, в который производится запись. Класс поддерживает несколько конструкторов, в том числе:
FileOutputStream(String filePath) FileOutputStream(File fileObj) FileOutputStream(String filePath, boolean append) FileOutputStream(File fileObj, boolean append)
В данных конструкторах файл задается либо через строковый путь, либо через объект File. Путь к файлу filePath может быть как абсолютным, так и относительным. Если файл не существует, то он будет создан. Если файл существует, то он будет перезаписан. Если не удалось создать или открыть файл для записи, то генерируется исключение FileNotFoundException. Второй параметр - append задает способ записи: если он равен true, то данные дозаписываются в конец файла, а при false - файл полностью перезаписывается.
Пример.
Замечания:
При выполнении программы в среде OnlineGDB даже если разработчик не создал предварительно файл notes.txt самостоятельно, то он будет создан автоматически в новой закладке (содержимое файла можно просмотреть):
При выполнении программы в среде JDoodle файл тоже будет создан, но явно просмотреть его содержимое нельзя.
Исключения IOException может возникнуть если в записываемый файл не сможет поместиться записываемая информация, либо файл не будет создан.
Для создания объекта FileOutputStream используется конструктор, принимающий в качестве параметра путь к файлу для записи. Если такого файла нет, то он автоматически создается при записи. Так как здесь записываем строку, то ее надо сначала перевести в массив байтов. И с помощью метода write строка записывается в файл.
Для автоматического закрытия файла и освобождения ресурса объект
FileOutputStream создается с помощью конструкции try…catch.
При этом необязательно записывать весь массив байтов. Используя перегрузку метода write(), можно записать и одиночный байт:
fos.write(buffer[0]); // запись первого байта
'H'.
Замечание.
В данном случае в качестве результата в файл будет записан символ
Достарыңызбен бөлісу: |