Java FileWriter

1. Общ преглед

В този урок ще научим и разберем класа FileWriter, присъстващ в пакета java.io.

2. FileWriter

FileWriter е специализиран OutputStreamWriter за писане на символни файлове . Той не излага никакви нови операции, но работи с операциите, наследени откласовете OutputStreamWriter и Writer .

До Java 11 FileWriter работеше с кодирането на символите по подразбиране и размера на байта на байта по подразбиране. Въпреки това, Java 11 въведе четири нови конструктори, които приемат по- Кодова, позволявайки по този начин, посочен от потребителя Кодова . За съжаление, все още не можем да променим размера на байтовия буфер и той е настроен на 8192.

2.1. Инстанциране на FileWriter

Има пет конструктора в класа 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 . Тъй като FileWriter е AutoCloseable , използвахме try-with-resources, за да не се налага да затваряме FileWriter изрично .

При изпълнение на горния код, низът ще бъде записан в посочения файл:

Hello Folks!

В FileWriter не гарантира дали FileWriterTest.txt файл ще бъде на разположение или да бъде създаден. Това зависи от основната платформа.

Трябва също да отбележим, че определени платформи могат да позволят само един екземпляр на FileWriter да отвори файла. В този случай другите конструктори от класа FileWriter ще се провалят, ако съответният файл вече е отворен.

2.3. Добавяне на низ към файл

Често трябва да добавяме данни към съществуващото съдържание на файл. Нека сега видим пример за FileWriter, който поддържа добавяне:

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

Както виждаме, използвахме конструктора с два аргумента, който приема име на файл и добавяне на булев флаг . Предаването на знамето за добавяне като true създава FileWriter, който ни позволява да добавяме текст към съществуващото съдържание на файл .

При изпълнението на кода ще имаме низ, добавен към съществуващото съдържание на посочения файл:

Hello Folks!Hello Folks Again! 

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

В тази статия научихме за удобния клас FileWriter и няколко начина, по които FileWriter може да бъде създаден. След това го използвахме за запис на данни във файл.

Както винаги, пълният изходен код за урока е достъпен в GitHub.