GrabDuck

Чтение и запись текстовых файлов. FileReader и FileWriter | Java

:

Последнее обновление: 18.12.2015

Хотя с помощью ранее рассмотренных классов можно записывать текст в файлы, однако все же их возможностей для полноценной работы с текстовыми файлами недостаточно. И для этой цели служат совсем другие классы, которые являются наследниками абстрактных классов Reader и Writer.

Запись файлов. Класс FileWriter

Класс FileWriter является производным от класса Writer. Он используется для записи текстовых файлов.

Чтобы создать объект FileWriter, можно использовать один из следующих конструкторов:

FileWriter(File file)
FileWriter(File file, boolean append)
FileWriter(FileDescriptor fd)
FileWriter(String fileName)
FileWriter(String fileName, boolean append) 

Так, в конструктор передается либо путь к файлу в виде строки, либо объект File, который ссылается на конкретный текстовый файл. Параметр append указывает, должны ли данные дозаписываться в конец файла (если параметр равен true), либо файл должен перезаписываться.

Запишем в файл какой-нибудь текст:

import java.io.*;

public class FilesApp {

    public static void main(String[] args) {
       
        try(FileWriter writer = new FileWriter("C:\\SomeDir\\notes3.txt", false))
        {
           // запись всей строки
            String text = "Мама мыла раму, раму мыла мама";
            writer.write(text);
            // запись по символам
            writer.append('\n');
            writer.append('E');
			
			writer.flush();
        }
        catch(IOException ex){
            
            System.out.println(ex.getMessage());
        } 
    } 
}

В конструкторе использовался параметр append со значением false - то есть файл будет перезаписываться. Затем с помощью методов, определенных в базовом классе Writer производится запись данных.

Чтение файлов. Класс FileReader

Класс FileReader наследуется от абстрактного класса Reader и предоставляет функциональность для чтения текстовых файлов.

Для создания объекта FileReader мы можем использовать один из его конструкторов:

FileReader(String fileName) 
FileReader(File file)
FileReader(FileDescriptor fd) 

А используя методы, определенные в базом классе Reader, произвести чтение файла:

import java.io.*;

public class FilesApp {

    public static void main(String[] args) {
       
        try(FileReader reader = new FileReader("C:\\SomeDir\\notes3.txt"))
        {
           // читаем посимвольно
            int c;
            while((c=reader.read())!=-1){
                
                System.out.print((char)c);
            } 
        }
        catch(IOException ex){
            
            System.out.println(ex.getMessage());
        }   
    } 
}