코딩 스쿨 Java

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

Java Files

자바 파일 처리 (Java Files): 개념 및 사용법

자바에서 파일 처리는 파일을 생성, 읽기, 쓰기, 삭제 등의 작업을 할 수 있도록 다양한 클래스와 메서드를 제공합니다. 자바의 파일 처리 기능은 ** .io**와 .nio.file 패키지를 통해 제공되며, 이 두 패키지를 사용하면 파일 입출력 작업을 쉽게 수행할 수 있습니다.

1. 파일 처리 주요 클래스

자바에서 파일 처리를 위해 사용하는 주요 클래스들은 다음과 같습니다:

  1. File 클래스 (
    .io.File): 파일이나 디렉토리를 나타내는 클래스로, 파일의 경로, 파일 존재 여부, 삭제 등을 처리할 수 있습니다.
  2. FileReader/FileWriter 클래스: 텍스트 파일을 읽고 쓰는 데 사용되는 클래스.
  3. BufferedReader/BufferedWriter 클래스: 파일을 효율적으로 읽고 쓰기 위한 버퍼링 클래스.
  4. Scanner 클래스: 텍스트 파일을 읽기 위한 클래스.
  5. Files 클래스 (
    .nio.file.Files): 파일 작업을 수행하는 유틸리티 메서드를 제공하는 클래스.

2. File 클래스

File 클래스는 파일 또는 디렉토리의 경로를 나타내며, 파일의 생성, 정보 확인, 삭제 등의 작업을 수행할 수 있습니다.

2.1 파일 경로 설정 및 정보 출력

import java.io.File;

public class Main {
    public static void main(String[] args) {
        // 파일 객체 생성 (경로를 입력)
        File file = new File("example.txt");

        // 파일 정보 출력
        if (file.exists()) {
            System.out.println("파일 이름: " + file.getName());
            System.out.println("파일 경로: " + file.getAbsolutePath());
            System.out.println("파일 크기: " + file.length() + " 바이트");
        } else {
            System.out.println("파일이 존재하지 않습니다.");
        }
    }
}

2.2 파일 생성

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        File file = new File("newfile.txt");

        try {
            if (file.createNewFile()) {
                System.out.println("파일이 생성되었습니다: " + file.getName());
            } else {
                System.out.println("파일이 이미 존재합니다.");
            }
        } catch (IOException e) {
            System.out.println("파일을 생성하는 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

2.3 파일 삭제

import java.io.File;

public class Main {
    public static void main(String[] args) {
        File file = new File("newfile.txt");

        if (file.delete()) {
            System.out.println("파일이 삭제되었습니다: " + file.getName());
        } else {
            System.out.println("파일을 삭제할 수 없습니다.");
        }
    }
}

3. 파일 읽기

3.1 Scanner 클래스를 사용한 파일 읽기

Scanner 클래스는 파일을 읽는 데 자주 사용되는 클래스 중 하나입니다.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try {
            File file = new File("example.txt");
            Scanner scanner = new Scanner(file);

            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                System.out.println(line);
            }

            scanner.close();
        } catch (FileNotFoundException e) {
            System.out.println("파일을 찾을 수 없습니다.");
            e.printStackTrace();
        }
    }
}

3.2 BufferedReader를 사용한 파일 읽기

  • *BufferedReader*는 파일을 버퍼링하여 읽기 성능을 개선하는 클래스입니다.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
            String line;

            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            reader.close();
        } catch (IOException e) {
            System.out.println("파일을 읽는 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

4. 파일 쓰기

4.1 FileWriter를 사용한 파일 쓰기

  • *FileWriter*는 파일에 데이터를 쓰는 데 사용됩니다. true를 두 번째 인수로 전달하면 파일을 덮어쓰지 않고 내용을 추가합니다.
import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            FileWriter writer = new FileWriter("example.txt");
            writer.write("안녕하세요, 파일 쓰기 예제입니다.\\\\n");
            writer.write("자바에서 파일을 다루는 방법을 배우고 있습니다.");
            writer.close();
            System.out.println("파일에 데이터가 성공적으로 저장되었습니다.");
        } catch (IOException e) {
            System.out.println("파일을 쓰는 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

4.2 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 writer = new BufferedWriter(new FileWriter("example.txt"));
            writer.write("자바 파일 처리 예제입니다.\\\\n");
            writer.write("BufferedWriter를 사용하여 파일 쓰기 성능을 개선할 수 있습니다.");
            writer.close();
            System.out.println("파일에 데이터가 성공적으로 기록되었습니다.");
        } catch (IOException e) {
            System.out.println("파일을 쓰는 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

5. Files 클래스를 사용한 파일 처리 (NIO)

자바 7부터 추가된

.nio.file.Files 클래스는 다양한 파일 작업을 더 간편하게 할 수 있는 유틸리티 메서드를 제공합니다. 파일 복사, 파일 이동, 파일 읽기/쓰기 작업을 쉽게 수행할 수 있습니다.

5.1 파일 읽기 (Files.readAllLines())

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

public class Main {
    public static void main(String[] args) {
        try {
            List<String> lines = Files.readAllLines(Paths.get("example.txt"));
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println("파일을 읽는 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

5.2 파일 쓰기 (Files.write())

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

public class Main {
    public static void main(String[] args) {
        List<String> lines = Arrays.asList("첫 번째 줄", "두 번째 줄", "세 번째 줄");

        try {
            Files.write(Paths.get("example.txt"), lines);
            System.out.println("파일에 데이터가 성공적으로 기록되었습니다.");
        } catch (IOException e) {
            System.out.println("파일을 쓰는 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

5.3 파일 복사 (Files.copy())

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

public class Main {
    public static void main(String[] args) {
        try {
            Files.copy(Paths.get("example.txt"), Paths.get("copy_example.txt"));
            System.out.println("파일이 성공적으로 복사되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 복사 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

5.4 파일 삭제 (Files.delete())

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

public class Main {
    public static void main(String[] args) {
        try {
            Files.delete(Paths.get("example.txt"));
            System.out.println("파일이 성공적으로 삭제되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 삭제 중 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

6. 파일 처리 시 예외 처리

파일 작업은 IO 작업이므로, 항상 예외가 발생할 수 있습니다. 자바에서는 IOException 또는 **FileNotFoundException**과 같은 예외를 처리해야 합니다. 이를 통해 파일이 없거나, 읽기/쓰기 중 오류가 발생할 때 프로그램이 비정상적으로 종료되지 않도록 해야 합니다.

7. 요약

  • 자바에서는 File 클래스를 사용해 파일

의 생성, 삭제, 존재 여부 등을 확인할 수 있습니다.

  • FileReader, **BufferedReader*를 사용하여 파일을 읽고, FileWriter, **BufferedWriter*를 사용하여 파일에 데이터를 쓸 수 있습니다.
  • .nio.file.Files 클래스는 파일을 읽고, 쓰고, 삭제하는 간편한 메서드를 제공합니다.
  • 파일 작업을 할 때는 항상 예외 처리를 통해 파일이 존재하지 않거나 접근할 수 없을 때의 상황을 처리해야 합니다.

자바에서 파일을 다루는 방법은 여러 가지가 있으며, 각 방법의 성능과 편리성에 따라 적절한 방식을 선택하여 사용할 수 있습니다.


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