Рубрики

Обработка файлов в Java с использованием FileWriter и FileReader

Java FileWriter и FileReader классы используются для записи и чтения данных из текстовых файлов (они являются классами Character Stream ). Рекомендуется не использовать классы FileInputStream и FileOutputStream, если вам нужно читать и записывать любую текстовую информацию, так как это классы потока байтов.

FileWriter

FileWriter полезен для создания файла с записью в него символов.

  • Этот класс наследуется от класса OutputStream.
  • Конструкторы этого класса предполагают, что кодировка символов по умолчанию и размер байтового буфера по умолчанию являются приемлемыми. Чтобы указать эти значения самостоятельно, создайте OutputStreamWriter для FileOutputStream.
  • FileWriter предназначен для написания потоков символов. Для записи потоков необработанных байтов рассмотрите возможность использования FileOutputStream.
  • FileWriter создает выходной файл, если его еще нет.

Конструкторы:

  • FileWriter (File file) — Создает объект FileWriter с заданным объектом File.
  • FileWriter (File file, логическое добавление) — создает объект FileWriter с учетом объекта File.
  • FileWriter (FileDescriptor fd) — создает объект FileWriter, связанный с дескриптором файла.
  • FileWriter (String fileName) — создает объект FileWriter с заданным именем файла.
  • FileWriter (String fileName, Boolean append) — Создает объект FileWriter с заданным именем файла с логическим значением, указывающим, добавлять ли записанные данные или нет.

Методы:

  • public void write (int c) выдает IOException — записывает один символ.
  • public void write (char [] stir) создает IOException — записывает массив символов.
  • public void write (String str) throws IOException — Записывает строку.
  • public void write (String str, int off, int len) выдает IOException — записывает часть строки. Здесь off — смещение, с которого начинается запись символов, а len — номер символа для записи.
  • public void flush () бросает IOException, очищает поток
  • public void close () throws IOException сначала очищает поток, а затем закрывает средство записи.

Чтение и запись выполняются посимвольно, что увеличивает количество операций ввода-вывода и влияет на производительность системы. BufferedWriter может использоваться вместе с FileWriter для повышения скорости выполнения.

Следующая программа показывает, как создать текстовый файл с помощью FileWriter

// Создание текстового файла с использованием FileWriter

import java.io.FileWriter;

import java.io.IOException;

class CreateFile

{

    public static void main(String[] args) throws IOException

    {

        // Принять строку

        String str = "File Handling in Java using "+

                " FileWriter and FileReader";

  

        // прикрепляем файл к FileWriter

        FileWriter fw=new FileWriter("output.txt");

  

        // читать символ из строки и писать

        // в FileWriter

        for (int i = 0; i < str.length(); i++)

            fw.write(str.charAt(i));

  

        System.out.println("Writing successful");

        // закрываем файл

        fw.close();

    }

}

FileReader

FileReader полезен для чтения данных в виде символов из текстового файла.

  • Этот класс наследуется от класса InputStreamReader.
  • Конструкторы этого класса предполагают, что кодировка символов по умолчанию и размер байтового буфера по умолчанию являются подходящими. Чтобы указать эти значения самостоятельно, создайте InputStreamReader для FileInputStream.
  • FileReader предназначен для чтения потоков символов. Для чтения потоков необработанных байтов рассмотрите возможность использования FileInputStream.

Конструкторы:

  • FileReader (File file) — создает FileReader, для которого передается файл для чтения
  • FileReader (FileDescripter fd) — Создает новый FileReader, предоставленный FileDescripter для чтения из
  • FileReader (String fileName) — Создает новый FileReader, учитывая имя файла для чтения из

Методы:

  • public int read () создает исключение IOException — читает один символ. Этот метод будет блокироваться до тех пор, пока символ не станет доступным, не произойдет ошибка ввода-вывода или не будет достигнут конец потока.
  • public int read (char [] cbuff) создает исключение IOException — читает символы в массив. Этот метод блокируется до тех пор, пока не будет доступен какой-либо ввод, не произойдет ошибка ввода-вывода или не будет достигнут конец потока.
  • public abstract int read (char [] buff, int off, int len) бросает IOException — Читает символы в часть массива. Этот метод блокируется до тех пор, пока не будет доступен какой-либо ввод, не произойдет ошибка ввода-вывода или не будет достигнут конец потока.
    Параметры:
    cbuf — целевой буфер
    off — смещение, с которого начинается сохранение символов
    len — Максимальное количество символов для чтения
  • public void close () бросает IOException, закрывает читателя.
  • public long skip (long n) throws IOException — Пропускает символы. Этот метод будет блокироваться до тех пор, пока не станут доступны некоторые символы, не произойдет ошибка ввода-вывода или не будет достигнут конец потока.
    Параметры:
    n — количество символов для пропуска

Следующая программа показывает, как читать из «текстового» файла с помощью FileReader

// Чтение данных из файла с использованием FileReader

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

class ReadFile

{

    public static void main(String[] args) throws IOException

    {

        // объявление переменной

        int ch;

  

        // проверяем, существует файл или нет

        FileReader fr=null;

        try

        {

            fr = new FileReader("text");

        }

        catch (FileNotFoundException fe)

        {

            System.out.println("File not found");

        }

  

        // читаем из FileReader до конца файла

        while ((ch=fr.read())!=-1)

            System.out.print((char)ch);

  

        // закрываем файл

        fr.close();

    }

}

Эта статья предоставлена Nishant Sharma . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Обработка файлов в Java с использованием FileWriter и FileReader

0.00 (0%) 0 votes