Работа с файлами в Java

В Java с помощью класса File можно работать с файлами. Этот класс находится в пакете java.io. Для работы с файлом создаётся объект класса File, при этом указывается имя файла.

Зачем нужно работать с файлами?

  1. Работа с файлами — неотъемлемая часть любого языка программирования, так как она позволяет сохранять результат выполнения программы в файл и выполнять над ним различные операции.
  2. Проще говоря, работа с файлами — это чтение и запись данных в файл.

Пример:

// Импорт класса File
import java.io.File;

class Geeks
{
    public static void main(String[] args)
    {
        // Указание имени файла
        File obj = new File("myfile.txt");
        System.out.println("File Created!");
    }
}

Вывод:

File Created!

В Java для выполнения операций ввода-вывода с файлами используется концепция потока (Stream). Сначала познакомимся с понятием Stream в Java.

Потоки (Streams) в Java

В Java поток — это последовательность данных. Этот концепт применяется для операций ввода-вывода с файлом. Существуют следующие типы потоков:

1. Входящий поток (Input Stream)

Класс InputStream является суперклассом для всех входящих потоков. Входящий поток используется для чтения данных с различных устройств ввода, таких как клавиатура, сеть и т.д. InputStream — абстрактный класс и сам по себе не используется напрямую. Для чтения данных применяются его подклассы.

Подклассы InputStream включают:

  1. AudioInputStream
  2. ByteArrayInputStream
  3. FileInputStream
  4. FilterInputStream
  5. StringBufferInputStream
  6. ObjectInputStream

Создание InputStream:

// Создание объекта входящего потока
InputStream obj = new FileInputStream();

Здесь поток создается с помощью FileInputStream.

Обратите внимание: входящий поток можно создавать и с помощью других подклассов InputStream.

Основные методы InputStream:

Метод Описание
read() Читает один байт из входящего потока.
read(byte[] array) Читает байты из потока и сохраняет их в указанный массив.
mark() Помечает позицию в потоке, до которой можно будет прочитать данные.
available() Возвращает количество доступных для чтения байтов в потоке.
markSupported() Проверяет, поддерживаются ли методы mark() и reset() в потоке.
reset() Возвращает управление к позиции, на которой был установлен маркер.
skip() Пропускает указанное число байтов во входящем потоке.
close() Закрывает входящий поток.

2. Исходящий поток (Output Stream)

Исходящий поток используется для записи данных на различные устройства вывода, например, монитор, файл и т.д. OutputStream — абстрактный суперкласс для всех исходящих потоков. Из-за абстрактности он не используется напрямую, но его подклассы применяются для записи данных.

Подклассы OutputStream следующие:

  1. ByteArrayOutputStream
  2. FileOutputStream
  3. StringBufferOutputStream
  4. ObjectOutputStream
  5. DataOutputStream
  6. PrintStream

Создание OutputStream:

// Создание объекта исходящего потока
OutputStream obj = new FileOutputStream();

Здесь поток создается с помощью FileOutputStream.

Обратите внимание: исходящий поток можно создавать и с помощью других подклассов OutputStream.

Основные методы OutputStream:

Метод Описание
write() Записывает указанный байт в исходящий поток.
write(byte[] array) Записывает байты из заданного массива в исходящий поток.
close() Закрывает исходящий поток.
flush() Принуждает запись всех данных, находящихся в потоке, в конечное место назначения.

По типу данных потоки делятся на:

1. Потоки байтов (Byte Stream)

Используются для чтения и записи данных в байтовом формате и подразделяются на:

  • Byte Input Stream — для чтения байтовых данных с разных устройств
  • Byte Output Stream — для записи байтовых данных на разные устройства

2. Потоки символов (Character Stream)

Используются для чтения и записи символьных данных, делятся на:

  • Character Input Stream — для чтения символов с устройств
  • Character Output Stream — для записи символов на устройства

Понимая, что такое поток, продолжим изучать работу с файлами в Java, подробно рассмотрев методы класса File для создания, чтения и записи файлов.

Методы класса File в Java

Ниже приведена таблица основных методов класса File:

Метод Описание Возвращаемый тип
canRead() Проверяет, доступен ли файл для чтения Boolean
canWrite() Проверяет, доступен ли файл для записи Boolean
createNewFile() Создаёт пустой файл Boolean
delete() Удаляет файл Boolean
exists() Проверяет, существует ли файл Boolean
length() Возвращает размер файла в байтах Long
getName() Возвращает имя файла String
list() Возвращает массив имён файлов в директории String[]
mkdir() Создаёт новую директорию Boolean
getAbsolutePath() Возвращает абсолютный путь к файлу String

Теперь перейдем к основным операциям с файлами в Java.

Операции с файлами

Основные операции, которые можно выполнить с файлами в Java:

  1. Создание файла
  2. Чтение из файла
  3. Запись в файл
  4. Удаление файла

1. Создание файла

  • Для создания файла используется метод createNewFile().
  • Если файл успешно создан, метод возвращает true, если файл уже существует — false.

Пример:

// Создание файла на Java

// Импорт класса File и IOException
import java.io.File;
import java.io.IOException;

public class CreateFile
{
    public static void main(String[] args)
    {
        // Создание файла и обработка исключения
        try {
            File Obj = new File("myfile.txt");

            // Создание файла
            if (Obj.createNewFile()) {
                System.out.println("File created: " + Obj.getName());
            }
            else {
                System.out.println("File already exists.");
            }
        }
        // Обработка исключения
        catch (IOException e) {
            System.out.println("An error has occurred.");
            e.printStackTrace();
        }
    }
}

Вывод:
File created: myfile.txt — если файл создан
File already exists. — если файл уже существует

2. Запись в файл

Для записи текста в файл используется класс FileWriter и его метод write().

Пример:

// Запись в файл на Java

// Импорт классов FileWriter и IOException
import java.io.FileWriter;
import java.io.IOException;

public class WriteFile 
{
    public static void main(String[] args) 
    {
        // Запись в текстовый файл и обработка исключений
        try {
            FileWriter Writer = new FileWriter("myfile.txt");

            // Запись текста в файл
            Writer.write("Files in Java are seriously good!!");
            Writer.close();

            System.out.println("Successfully written.");
        }
        // Обработка исключения
        catch (IOException e) {
            System.out.println("An error has occurred.");
            e.printStackTrace();
        }
    }
}

Вывод:
Successfully written.

3. Чтение из файла

Для чтения содержимого файла удобно использовать класс Scanner.

Пример:

// Чтение файла на Java

// Импорт классов File, FileNotFoundException и Scanner
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFile
{
    public static void main(String[] args)
    {
        // Чтение файла и обработка исключений
        try {
            File Obj = new File("myfile.txt");
            Scanner Reader = new Scanner(Obj);

            // Чтение файла построчно
            while (Reader.hasNextLine()) {
                String data = Reader.nextLine();
                System.out.println(data);
            }

            Reader.close();
        }
        // Обработка исключения
        catch (FileNotFoundException e) {
            System.out.println("An error has occurred.");
            e.printStackTrace();
        }
    }
}

Вывод:
Содержимое файла (например, Files in Java are seriously good!!).

4. Удаление файла

Для удаления файла используется метод delete().

Пример:

// Удаление файла на Java

import java.io.File;

public class DeleteFile {
    public static void main(String[] args) {
        File Obj = new File("myfile.txt");

        // Удаление файла
        if (Obj.delete()) {
            System.out.println("The deleted file is : " + Obj.getName());
        }
        else {
            System.out.println("Failed in deleting the file.");
        }
    }
}

Вывод:
The deleted file is : myfile.txt — если файл удалён
Failed in deleting the file. — если удаление не удалось


🔑 Ключевые моменты:

  • Класс File из пакета java.io позволяет создавать объекты-файлы для последующей работы с файлами.
  • Потоки (Streams) в Java используются для чтения (InputStream) и записи (OutputStream) данных в файлы и с других устройств.
  • Метод createNewFile() создаёт файл и возвращает true, если файл был создан успешно, или false, если файл уже существует.
  • Класс FileWriter и его метод write() применяются для записи данных в файл.
  • Для чтения содержимого файла можно использовать класс Scanner.
  • Метод delete() удаляет файл и возвращает true при успешном удалении.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *