Класс Writer
Класс Writer - это абстрактный базовый класс из пакета
java.io, предназначенный для записи символьных данных
в выходной поток. Он является родителем для всех классов,
которые пишут текст: FileWriter, BufferedWriter,
OutputStreamWriter, PrintWriter и других.
Сам по себе Writer абстрактный, поэтому напрямую
создать его объект нельзя - нужно использовать один из
классов-наследников. Основные методы класса позволяют
записывать один символ, массив символов, строку или часть
строки, а также очищать буфер и закрывать поток.
Метод write принимает либо один символ (в виде
значения типа int), либо массив символов, либо строку.
Также существует перегрузка, которая принимает массив
символов, начальный индекс и длину - в первый параметр
мы передаем массив, во второй - начальный индекс,
в третий - количество символов для записи. Метод
flush принудительно сбрасывает содержимое буфера
в целевой поток, а close закрывает поток и
освобождает связанные с ним ресурсы.
Синтаксис
Writer writer = new SomeWriter(...);
writer.write(int c);
writer.write(char[] cbuf);
writer.write(char[] cbuf, int off, int len);
writer.write(String str);
writer.write(String str, int off, int len);
writer.flush();
writer.close();
Пример
Давайте запишем строку в файл с помощью
FileWriter, который наследуется от Writer:
import java.io.FileWriter;
import java.io.Writer;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (Writer writer = new FileWriter("out.txt"))
{
writer.write("abcde");
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}
В результате в файле out.txt окажется строка:
"abcde"
Пример
Давайте запишем в файл часть строки, начиная
со второго символа (индекс 1) и длиной
3 символа:
import java.io.FileWriter;
import java.io.Writer;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (Writer writer = new FileWriter("out.txt"))
{
writer.write("abcde", 1, 3);
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}
В результате в файле out.txt окажется строка:
"bcd"
Пример
Давайте запишем в файл массив символов
и явно вызовем метод flush:
import java.io.FileWriter;
import java.io.Writer;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (Writer writer = new FileWriter("out.txt"))
{
char[] chars = {'1', '2', '3', '4', '5'};
writer.write(chars);
writer.write("\n");
writer.write("abcde");
writer.flush();
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}
В результате в файле out.txt окажется:
"12345
abcde"