코딩 스쿨 Java

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

Java Create-Write Files

자바 파일 생성 및 쓰기 (Java Create and Write Files)

자바에서는 파일을 생성하고 데이터를 파일에 쓰는 작업을 매우 쉽게 수행할 수 있습니다. 파일 생성과 쓰기는 주로 .io 패키지와 .nio.file 패키지를 통해 이루어지며, 각각의 클래스가 다양한 파일 작업을 지원합니다. 여기서는 자바에서 파일을 생성하고, 텍스트를 파일에 쓰는 방법을 살펴보겠습니다.

1. FileWriter를 사용한 파일 생성 및 쓰기

FileWriter 클래스는 자바에서 파일을 생성하고 텍스트 데이터를 쓰는 데 자주 사용되는 클래스입니다. 문자 기반의 스트림으로, 텍스트 파일에 쓰기에 적합합니다. 파일이 존재하지 않으면 자동으로 파일을 생성하고, 파일이 이미 존재하는 경우 파일을 덮어씁니다.

1.1 FileWriter를 사용한 파일 생성 및 쓰기 예제

import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            // FileWriter 객체 생성 (파일이 존재하지 않으면 새 파일이 생성됨)
            FileWriter writer = new FileWriter("example.txt");

            // 파일에 데이터 쓰기
            writer.write("Hello, World!\\\\n");
            writer.write("This is a file writing example using FileWriter.\\\\n");

            // FileWriter 닫기
            writer.close();

            System.out.println("파일 쓰기가 완료되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 쓰기 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

1.2 FileWriter로 텍스트 추가하기 (Append 모드)

FileWriter는 파일을 덮어쓰기 동작을 기본으로 하지만, 파일에 데이터를 추가하고 싶다면 두 번째 인자로 true 값을 전달하여 append 모드로 사용할 수 있습니다.

import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            // FileWriter 객체 생성 (true는 append 모드를 의미)
            FileWriter writer = new FileWriter("example.txt", true);

            // 기존 파일에 데이터 추가
            writer.write("Appending new content to the file.\\\\n");

            // FileWriter 닫기
            writer.close();

            System.out.println("파일에 데이터가 추가되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 쓰기 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

1.3 BufferedWriter로 파일 쓰기 성능 향상

BufferedWriter는 **FileWriter**와 함께 사용되어 버퍼링을 통해 파일 쓰기 성능을 향상시킵니다. 버퍼에 데이터를 모아두었다가 한꺼번에 파일로 출력하기 때문에 성능이 향상됩니다.

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            // BufferedWriter 사용 (FileWriter와 함께)
            BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"));

            // 파일에 데이터 쓰기
            writer.write("Hello, World!\\\\n");
            writer.write("Writing data using BufferedWriter for better performance.\\\\n");

            // BufferedWriter 닫기
            writer.close();

            System.out.println("파일 쓰기가 완료되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 쓰기 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

2. Files 클래스를 사용한 파일 생성 및 쓰기

자바 7에서 도입된

.nio.file.Files 클래스는 파일을 생성하고 데이터를 쓰는 작업을 간편하게 처리할 수 있는 유틸리티 메서드를 제공합니다.

2.1 Files.write() 메서드를 사용한 파일 쓰기

Files.write() 메서드는 문자열이나 바이트 배열을 파일에 쓰는 기능을 제공합니다.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        try {
            // 파일에 쓸 데이터
            List<String> lines = Arrays.asList("Hello, World!", "This is a file writing example using Files.write().");

            // 파일에 데이터 쓰기
            Files.write(Paths.get("example.txt"), lines);

            System.out.println("파일 쓰기가 완료되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 쓰기 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

2.2 Files.write() 메서드를 사용해 바이트 배열 쓰기

Files.write() 메서드를 사용하여 문자열이 아닌 바이트 배열을 파일에 쓸 수도 있습니다.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class Main {
    public static void main(String[] args) {
        try {
            // 바이트 배열로 파일 쓰기
            String content = "Writing data as bytes using Files.write().";
            byte[] bytes = content.getBytes();

            // 바이트 배열을 파일에 쓰기
            Files.write(Paths.get("example_bytes.txt"), bytes);

            System.out.println("바이트 파일 쓰기가 완료되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 쓰기 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

3. 파일 예외 처리 (IOException)

파일 작업 중에 발생할 수 있는 입출력 예외(IOException)는 항상 적절하게 처리해야 합니다. 파일이 존재하지 않거나, 읽기/쓰기 권한이 없을 경우 예외가 발생할 수 있습니다.

3.1 파일 예외 처리 예제

import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            FileWriter writer = new FileWriter("nonexistent_directory/example.txt");

            writer.write("This will throw an exception if the directory doesn't exist.");
            writer.close();
        } catch (IOException e) {
            System.out.println("파일 쓰기 중 오류가 발생했습니다: " + e.getMessage());
        }
    }
}

주요 예외:

  • IOException: 파일을 읽거나 쓸 때 발생하는 일반적인 예외.
  • FileNotFoundException: 파일이 존재하지 않거나 경로가 잘못된 경우 발생하는 예외.

4. 파일 쓰기 모드 요약

자바에서 파일 쓰기를 수행할 때는 주로 덮어쓰기 또는 추가 모드로 작업을 설정할 수 있습니다.

  • 덮어쓰기: 기존 파일이 있는 경우, 그 파일을 새 데이터로 덮어씁니다. FileWriter의 기본 동작.
  • 추가(append) 모드: 기존 파일에 데이터를 추가하려면, FileWriter를 생성할 때 두 번째 인자로 true를 전달하여 추가 모드로 설정합니다.

요약

  • *FileWriter*는 파일을 생성하고 텍스트 데이터를 쓰는 데 사용됩니다. 기본적으로 파일을 덮어쓰는 방식으로 동작합니다.
  • *BufferedWriter*를 사용하면 버퍼링을 통해 파일 쓰기 성능을 향상시킬 수 있습니다.
  • Files 클래스write() 메서드를 제공하여 간편하게 파일을 생성하고 데이터를 쓸 수 있습니다.
  • 파일 작업 시 발생할 수 있는 **입출력 예외(IOException)**를 항상 처리하여 파일 접근 오류에 대한 대응을 해야 합니다.

이러한 방법을 통해 자바에서 파일을 생성하고 데이터를 기록하는 작업을 손쉽게 수행할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com