javaboiii의 JAVA/JAVA 기초

JAVA - 파일 입출력

javaboiii 2024. 7. 25. 20:24

JAVA

File 클래스는 파일 및 디렉터리 경로를 추상적으로 표현함

FileInputStream / FileOutputStream : 바이트 단위 입출력

FileReader / FileWriter : 문자 단위 입출력

BufferedReader / BufferedWriter : 버퍼링된 문자 입출력

 

파일 입출력의 일반적인 패턴

1. 스트림을 열고 사용하기 전에 리소스를 확보

2. 데이터를 읽거나 쓰는 작업을 수행

3. 스트림을 닫아 리소스 해제

 

입출력 예외 처리

파일 입출력 작업은 I/O(input / output) 오류가 발생할 가능성이 높기 때문에 예외 처리가

필수적임 대부분의 입출력 클래스는 메서드 IOException을 던질 수 있으므로 try - catch 구문을

사용하여 예외처리를 해야함

 

[text파일 읽기]

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

// [파일 입출력]
public class Test01 {
	public static void main(String[] args) {
		// 경로를 상단에 작성하면 효울성이 좋음
		// 실습경로
		String filePath="C:\\src\\class01\\";

		// 확장자를 반드시 함께 작성
		String fileName = "test.txt"; 

		FileReader fileReader;
		String line="";
		try {
			fileReader = new FileReader(filePath+fileName);
			// ▲ 문제가 없어야만
			// ▼를 수행할 수 있음
			BufferedReader reader = new BufferedReader(fileReader); // 인자, 인풋, 인수, 입력값, 파라미터, 매개변수, argument
			line = reader.readLine();
			/*
			while( (line=reader.readLine()) != null) {
				System.out.println("line : "+line);
			}
			// 코드가 패턴화(템플릿화)되었다.라고 표현
			*/
			System.out.println(line);
		} catch (FileNotFoundException e) {
			System.out.println("파일명이 올바르지 않습니다");
		} catch (IOException e) {
			System.out.println("입출력 과정중 에러 발생가 발생했습니다.");
		}
    }
}

 

 

[파일 생성 및 쓰기]

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

public class Test02 {
	public static void main(String[] args) {

		String filePath="D:\\src\\class01\\";
		// 실습경로
		String fileName="result.txt";
		// 확장자를 반드시 함께 작성
		
		Scanner sc=new Scanner(System.in);
		System.out.print("사용자 이름 입력 >> ");
		String name=sc.next();
		int cnt=3;
		
		FileWriter fileWriter;
		try {
			fileWriter = new FileWriter(filePath+fileName);
			
			BufferedWriter writer=new BufferedWriter(fileWriter);
			
			writer.write(name+"님이 "+cnt+"번만에 정답을 맞추셨습니다! :D");
			writer.close(); // writer 닫아줘야 끝
		} catch (IOException e) {
			System.out.println("파일 입출력 에러가 발생했습니다!");
		}		
	}
}