본문 바로가기
자바 (JAVA)

📚 JAVA 10강: 파일 입출력 (File I/O)

by demianpark127 2025. 1. 3.
SMALL

📚 10강: 파일 입출력 (File I/O)


🚀 1. 파일 입출력(File I/O)이란?

  • **파일 입출력(File I/O)**은 프로그램이 파일을 읽거나 쓰는 작업을 의미합니다.
  • Java는 파일 I/O를 위해 java.io 및 java.nio 패키지를 제공합니다.
  • 주요 작업:
    • 파일 읽기(Read)
    • 파일 쓰기(Write)
    • 파일 추가(Append)

🚀 2. 주요 클래스 및 개념

📌 2.1 파일 입출력 주요 클래스

클래스 설명
File 파일과 디렉터리를 다루는 클래스
FileReader 문자 단위로 파일 읽기
FileWriter 문자 단위로 파일 쓰기
BufferedReader 텍스트 파일을 효율적으로 읽기
BufferedWriter 텍스트 파일을 효율적으로 쓰기
FileInputStream 바이트 단위로 파일 읽기
FileOutputStream 바이트 단위로 파일 쓰기

🚀 3. 파일 쓰기 (File Writing)

📌 3.1 FileWriter를 사용한 파일 쓰기

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

public class FileWriteExample {
    public static void main(String[] args) {
        try {
            FileWriter writer = new FileWriter("output.txt");
            writer.write("Hello, Java File I/O!\n");
            writer.write("This is a file writing example.\n");
            writer.close();
            System.out.println("파일 쓰기 완료!");
        } catch (IOException e) {
            System.out.println("파일 쓰기 중 오류 발생: " + e.getMessage());
        }
    }
}
📌 출력 결과:

파일 쓰기 완료!

 

📌 설명:

  • FileWriter 객체로 파일을 생성하거나 기존 파일을 덮어씁니다.
  • write() 메서드로 파일에 문자열을 씁니다.
  • close() 메서드로 파일 리소스를 해제합니다.

🚀 4. 파일 읽기 (File Reading)

📌 4.1 FileReader를 사용한 파일 읽기

import java.io.FileReader;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        try {
            FileReader reader = new FileReader("output.txt");
            int character;
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
            reader.close();
        } catch (IOException e) {
            System.out.println("파일 읽기 중 오류 발생: " + e.getMessage());
        }
    }
}

📌 출력 결과:

Hello, Java File I/O!
This is a file writing example.

 

📌 설명:

  • FileReader를 사용해 문자 단위로 파일을 읽습니다.
  • read() 메서드로 한 문자씩 읽고 출력합니다.
  • close() 메서드로 파일 리소스를 해제합니다.

🚀 5. BufferedReader & BufferedWriter

📌 5.1 BufferedWriter로 파일 쓰기

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

public class BufferedWriterExample {
    public static void main(String[] args) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt", true))) {
            writer.write("BufferedWriter를 사용해 파일에 추가합니다.\n");
            writer.close();
            System.out.println("BufferedWriter: 파일 쓰기 완료!");
        } catch (IOException e) {
            System.out.println("오류: " + e.getMessage());
        }
    }
}

📌 5.2 BufferedReader로 파일 읽기

}
📌 5.2 BufferedReader로 파일 읽기
java
코드 복사
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReaderExample {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("output.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println("오류: " + e.getMessage());
        }
    }
}

📌 설명:

  • BufferedWriter는 파일에 데이터를 효율적으로 씁니다.
  • BufferedReader는 파일을 한 줄씩 읽을 수 있습니다.

🚀 6. 파일 존재 여부 확인 및 삭제

📌 6.1 File 클래스를 사용한 파일 관리

 

import java.io.File;

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

        // 파일 존재 여부 확인
        if (file.exists()) {
            System.out.println("파일이 존재합니다: " + file.getAbsolutePath());
        } else {
            System.out.println("파일이 존재하지 않습니다.");
        }

        // 파일 삭제
        if (file.delete()) {
            System.out.println("파일이 삭제되었습니다.");
        } else {
            System.out.println("파일 삭제 실패.");
        }
    }
}

🚀 7. 파일 입출력 예외 처리

  • 파일 작업 중 예외 발생 가능성:
    • 파일이 존재하지 않을 때
    • 접근 권한이 없을 때
    • 디스크 공간 부족
  • IOException 및 FileNotFoundException 예외 처리가 필요합니다.

🚀 8. 실습 과제

1. 파일 쓰기

  • 사용자로부터 문자열을 입력받아 user_input.txt 파일에 저장하세요.
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class FileWriteExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("저장할 문자열을 입력하세요: ");
        String input = scanner.nextLine();

        try (FileWriter writer = new FileWriter("user_input.txt")) {
            writer.write(input);
            System.out.println("입력한 내용이 user_input.txt 파일에 저장되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 쓰기 중 오류 발생: " + e.getMessage());
        } finally {
            scanner.close();
        }
    }
}

2. 파일 읽기

  • user_input.txt 파일을 읽고 내용을 출력하세요.
import java.io.FileReader;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        try (FileReader reader = new FileReader("user_input.txt")) {
            int character;
            System.out.println("파일 내용:");
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            System.out.println("파일 읽기 중 오류 발생: " + e.getMessage());
        }
    }
}

3. 파일 추가

  • user_input.txt 파일에 추가로 문자열을 쓰세요.
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class FileAppendExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("추가할 문자열을 입력하세요: ");
        String input = scanner.nextLine();

        try (FileWriter writer = new FileWriter("user_input.txt", true)) {
            writer.write("\n" + input);
            System.out.println("입력한 내용이 user_input.txt 파일에 추가되었습니다.");
        } catch (IOException e) {
            System.out.println("파일 추가 중 오류 발생: " + e.getMessage());
        } finally {
            scanner.close();
        }
    }
}

4. 파일 존재 확인 및 삭제

  • user_input.txt 파일의 존재 여부를 확인하고, 삭제하세요.
import java.io.File;

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

        // 파일 존재 여부 확인
        if (file.exists()) {
            System.out.println("파일이 존재합니다: " + file.getAbsolutePath());

            // 파일 삭제
            if (file.delete()) {
                System.out.println("파일이 성공적으로 삭제되었습니다.");
            } else {
                System.out.println("파일 삭제에 실패했습니다.");
            }
        } else {
            System.out.println("파일이 존재하지 않습니다.");
        }
    }
}

🎯 9. 학습 목표

  1. FileWriter와 FileReader를 사용해 파일을 읽고 쓸 수 있다.
  2. BufferedWriter와 BufferedReader로 효율적인 파일 입출력을 할 수 있다.
  3. File 클래스를 사용하여 파일의 존재 여부를 확인하고 삭제할 수 있다.
  4. 예외 처리(IOException)를 통해 안전하게 파일 작업을 할 수 있다.

다음 강의 예고: 11강 - 스레드 (Thread)

다음 강의에서는 **자바 스레드(Thread)**를 학습합니다. 😊

LIST