Символьные потоки также определены в двух иерархиях классов. На их вершине находятся два абстрактных класса: Reader и Writer. Эти абстрактные классы управляют потоками символов Unicode. В языке Java предусмотрено несколько конкретных подклассов для каждого из них.
Скачать исходники для статьи можно ниже
Вот некоторые из них:
BufferedReader – Буферизированный входной символьный поток – цепной поток
BufferedWriter – Буферизированный выходной символьный поток – цепной поток
FileReader – Входной поток, читающий файл – поток для соединения
FileWriter – Выходной поток, пишущий в файл – поток для соединения
Reader – Абстрактный класс, описывающий символьный ввод
Writer – Абстрактный класс, описывающий символьный вывод
Абстрактные классы Reader и Writer определяют несколько ключевых методов, которые реализуют другие потоковые классы.
Два наиболее важных — это методы read() и write(), которые, соответственно читают и пишут символьные данные.
Эти методы переопределяются в производных потоковых классах.
Пример использования FileWriter и FileReader:
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("file.txt");
FileWriter fWriter = new FileWriter(file);
// создание символьного потока
fWriter.write("Привет, дружище");
// запись файла
fWriter.close();
// закрытие потока fWriter
FileReader fReader = new FileReader(file);
int g = fReader.read();
while (g != -1) {
System.out.print((char) g);
g = fReader.read();
// чтение символа из файла
}
fReader.close();
}
}
Вывод программы:
Привет, дружище
Пример использования потоков для соединения FileWriter и FileReader и цепных потоков BufferedWriter и BufferedReader:
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("file.txt");
FileWriter fWriter = new FileWriter(file);
// создание символьного потока
BufferedWriter bufferedWriter = new BufferedWriter(fWriter);
// создание цепного буферизированного потока
bufferedWriter.write("Привет, дружище");
// закрытие потока bufferedWriter
bufferedWriter.close();
// закрытие потока bufferedWriter приводит к автоматическому
// закрытию потока fWriter
FileReader fReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fReader);
String s = bufferedReader.readLine();
// метод readLine() читает строку целиком
while (s != null) {
System.out.print(s);
s = bufferedReader.readLine();
}
bufferedReader.close();
}
}
Вывод программы:
Привет, дружище


