Рубрики
Без рубрики

Файловая машина Java

Узнайте о классе Java FileWriter на нескольких простых примерах

Автор оригинала: Nikunj Gandhi.

1. Обзор

В этом уроке мы изучим и поймем класс FileWriter , присутствующий в java.io посылка.

2. Файловая машинка

FileWriter – это | специализированный OutputStreamWriter для записи символьных файлов . Он не предоставляет никаких новых операций, но работает с операциями, унаследованными от классов OutputStreamWriter и Writer .

До Java 11 файловая машина работала с кодировкой символов по умолчанию и размером байтового буфера по умолчанию. Однако в Java 11 были введены четыре новых конструктора, которые принимают Charset , тем самым позволяя пользователю указывать Charset . К сожалению, мы все еще не можем изменить размер байтового буфера, и он установлен на 8192.

2.1. Создание экземпляра пишущей машинки

В классе FileWriter есть пять конструкторов, если мы используем версию Java до Java 11.

Давайте взглянем на различные конструкторы:

public FileWriter(String fileName) throws IOException {
    super(new FileOutputStream(fileName));
}

public FileWriter(String fileName, boolean append) throws IOException {
    super(new FileOutputStream(fileName, append));
}

public FileWriter(File file) throws IOException {
    super(new FileOutputStream(file));
}

public FileWriter(File file, boolean append) throws IOException {
    super(new FileOutputStream(file, append));
}

public FileWriter(FileDescriptor fd) {
    super(new FileOutputStream(fd));
}

Java 11 представила четыре дополнительных конструктора:

public FileWriter(String fileName, Charset charset) throws IOException {
    super(new FileOutputStream(fileName), charset);
}

public FileWriter(String fileName, Charset charset, boolean append) throws IOException {
    super(new FileOutputStream(fileName, append), charset);
}

public FileWriter(File file, Charset charset) throws IOException {
    super(new FileOutputStream(file), charset);
}

public FileWriter(File file, Charset charset, boolean append) throws IOException {
    super(new FileOutputStream(file, append), charset);
}

2.2. Запись строки в файл

Теперь давайте используем один из конструкторов FileWriter для создания экземпляра FileWriter , а затем запишем его в файл:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) {
    fileWriter.write("Hello Folks!");
}

Мы использовали конструктор с одним аргументом FileWriter , который принимает имя файла. Затем мы используем операцию write(String str) , унаследованную от класса Writer . Поскольку файловая машина является автоклавируемой , мы использовали try-with-resources так что нам не нужно закрывать файловую машину явно .

При выполнении приведенного выше кода строка | будет записана в указанный файл:

Hello Folks!

Файловая машина не гарантирует, что FileWriterTest.txt файл будет доступен или будет создан. Он зависит от базовой платформы.

Мы также должны отметить, что некоторые платформы могут разрешить открывать файл только одному экземпляру FileWriter . В этом случае другие конструкторы класса FileWriter потерпят неудачу, если соответствующий файл уже открыт.

2.3. Добавление строки в файл

Нам часто приходится добавлять данные к существующему содержимому файла. Теперь давайте рассмотрим пример FileWriter , который поддерживает добавление:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt", true)) {
    fileWriter.write("Hello Folks Again!");
}

Как мы видим, мы использовали конструктор с двумя аргументами, который принимает имя файла и boolean flag append . Передача флага append as true создает FileWriter , который позволяет нам добавлять текст к существующему содержимому файла .

При выполнении кода мы добавим String к существующему содержимому указанного файла:

Hello Folks!Hello Folks Again!

3. Заключение

В этой статье мы узнали о удобном классе FileWriter и о нескольких способах создания FileWriter . Затем мы использовали его для записи данных в файл.

Как всегда, полный исходный код учебника доступен на GitHub .