Запись в файл

JavaJavaBeginner

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы научимся записывать данные в файл с использованием языка программирования Java. Запись данных в файл может быть очень полезной, когда необходимо сохранить данные, сгенерированные вашей программой, для дальнейшего использования.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/create_write_files("Create/Write Files") java/FileandIOManagementGroup -.-> java/io("IO") java/FileandIOManagementGroup -.-> java/nio("NIO") subgraph Lab Skills java/files -.-> lab-117457{{"Запись в файл"}} java/create_write_files -.-> lab-117457{{"Запись в файл"}} java/io -.-> lab-117457{{"Запись в файл"}} java/nio -.-> lab-117457{{"Запись в файл"}} end

Открыть/создать файл

Первым шагом является открытие или создание файла, в который мы хотим записать данные. Мы создадим новый файл с именем output.txt в директории ~/project.

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
    public static void main(String[] args) {
        Path path = Paths.get("~/project/output.txt");
    }
}

Записать строку в файл

Теперь, когда у нас открыт файл, мы можем записать в него строку. Это делается с использованием метода Files.write().

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("~/project/output.txt");
        String content = "This is some text that we want to write to the file";

        Files.write(path, content.getBytes());
    }
}

Здесь мы записываем строку в файл, конвертируя ее в байты и передавая их методу Files.write(). Обратите внимание, что нам нужно использовать метод getBytes(), чтобы преобразовать строку в байты.

Для запуска кода выше в терминале сначала нужно перейти в директорию вашего проекта в терминале. Затем выполните следующую команду:

javac Main.java && java Main

Записать список строк в файл

Мы также можем записать список строк в файл с использованием метода Files.write(), как показано ниже:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("~/project/output.txt");
        List<String> lines = Arrays.asList("This is line 1", "This is line 2", "This is line 3");

        Files.write(path, lines, StandardCharsets.UTF_8);
    }
}

Здесь мы записываем список строк в файл. Обратите внимание, что мы используем перегруженную версию метода Files.write(), которая принимает список строк в качестве параметра.

Для выполнения кода выше для записи списка строк в файл сначала нужно перейти в директорию вашего проекта в терминале. Затем выполните следующую команду:

javac Main.java && java Main

Добавление данных в файл

Если вы хотите записывать данные в файл, не перезаписывая существующие данные в нем, вы можете использовать параметр StandardOpenOption.APPEND при открытии файла. Это добавит любые новые данные в конец файла.

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import java.nio.file.StandardOpenOption;

public class Main {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("~/project/output.txt");
        List<String> lines = Arrays.asList("This is line 4", "This is line 5", "This is line 6");

        Files.write(path, lines, StandardCharsets.UTF_8, StandardOpenOption.APPEND);
    }
}

Здесь мы добавили параметр StandardOpenOption.APPEND в метод Files.write(), который сообщает Java, что нужно добавить новые данные в конец файла, а не перезаписывать существующие.

Для выполнения операции добавления данных, сначала нужно перейти в директорию вашего проекта в терминале. Затем выполните следующую команду:

javac Main.java && java Main

Закрыть файл

Наконец, нам нужно закрыть файл с использованием метода Files.close(). Это обеспечит запись любых буферизованных данных в файл перед его закрытием.

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import java.nio.file.StandardOpenOption;

public class Main {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("~/project/output.txt");
        String content = "This is some text that we want to write to the file";

        Files.write(path, content.getBytes());
        Files.write(path, System.lineSeparator().getBytes(), StandardOpenOption.APPEND);
        Files.write(path, "This is a new line".getBytes(), StandardOpenOption.APPEND);

        Files.close();
    }
}

Резюме

В этом практическом занятии мы научились записывать данные в файл с использованием класса Files в Java. Мы увидели, как записать строку в файл, записать список строк в файл, добавить данные в файл и закрыть файл. Надеемся, что теперь вы сможете легко записывать файл с помощью класса Files в Java.