Класс FileWriter
Класс FileWriter из пакета java.io используется
для записи символьных данных в файл. Он является удобной
надстройкой над OutputStreamWriter и позволяет
записывать строки и отдельные символы напрямую в файл,
не прибегая к ручному кодированию в байты. В первом
параметре конструктора мы передаем путь к файлу или
объект File, во второй параметр (необязательный)
можно передать флаг append - если он равен
true, данные будут дописываться в конец файла,
а не перезаписывать его. Также существует конструктор,
принимающий объект Charset для явного указания
кодировки.
Синтаксис
new FileWriter(String fileName)
new FileWriter(String fileName, boolean append)
new FileWriter(File file)
new FileWriter(File file, boolean append)
new FileWriter(String fileName, Charset charset)
new FileWriter(String fileName, Charset charset, boolean append)
Пример
Давайте запишем строку "abcde" в файл
"test.txt" и затем прочитаем его содержимое:
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (FileWriter writer = new FileWriter("test.txt"))
{
writer.write("abcde");
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
try (FileReader reader = new FileReader("test.txt"))
{
int ch;
StringBuilder res = new StringBuilder();
while ((ch = reader.read()) != -1)
{
res.append((char) ch);
}
System.out.println(res.toString());
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте допишем строку "12345" в конец
существующего файла, передав вторым параметром
true:
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (FileWriter writer = new FileWriter("test.txt", true))
{
writer.write("12345");
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
try (FileReader reader = new FileReader("test.txt"))
{
int ch;
StringBuilder res = new StringBuilder();
while ((ch = reader.read()) != -1)
{
res.append((char) ch);
}
System.out.println(res.toString());
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода:
"abcde12345"
Пример
Давайте запишем строку с явным указанием
кодировки UTF_8:
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class Main
{
public static void main(String[] args)
{
try (FileWriter writer = new FileWriter(
"test.txt", StandardCharsets.UTF_8))
{
writer.write("abcde");
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
try (FileReader reader = new FileReader(
"test.txt", StandardCharsets.UTF_8))
{
int ch;
StringBuilder res = new StringBuilder();
while ((ch = reader.read()) != -1)
{
res.append((char) ch);
}
System.out.println(res.toString());
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
класс
Writer,
который является родительским классом для FileWriter -
класс
FileReader,
который используется для чтения символов из файла -
класс
BufferedWriter,
который добавляет буферизацию при записи -
класс
StandardCharsets,
который содержит стандартные кодировки