소개

이 랩에서는 Java 프로그래밍 언어를 사용하여 파일에 데이터를 쓰는 방법을 배웁니다. 파일에 데이터를 쓰는 것은 프로그램에서 생성된 데이터를 나중에 사용하기 위해 저장해야 할 때 매우 유용할 수 있습니다.

파일 열기/생성

첫 번째 단계는 데이터를 쓰려는 파일을 열거나 생성하는 것입니다. ~/project 디렉토리에 output.txt라는 새 파일을 생성합니다.

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);
    }
}

여기서는 Files.write() 메서드에 StandardOpenOption.APPEND 옵션을 추가했습니다. 이 옵션은 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();
    }
}

요약

이 랩에서는 Java 의 Files 클래스를 사용하여 데이터를 파일에 쓰는 방법을 배웠습니다. 문자열을 파일에 쓰는 방법, 문자열 목록을 파일에 쓰는 방법, 파일에 추가하는 방법, 그리고 파일을 닫는 방법을 살펴보았습니다. 이제 Java 의 Files 클래스를 사용하여 파일을 쉽게 쓸 수 있기를 바랍니다.