반응형

파일 입출력이란?

  • 지금까지 해왔던 System.out.println()나 Scanner등과 같이 화면으로 입력, 출력을 하는것이 아닌 파일을 통해 입력과 출력을 하는 것

파일 경로

  • 파일의 경로를 표현하는 방법에는 2가지가 있음 => 절대경로, 상대경로
  • 절대경로는 C:\Program Files\Java 이런 식의 주소 표현하는 방법
  • 상대경로는 특정 파일이나 폴더를 기준으로 상대적으로 주소를 표현하는 방법
  • 상대경로를 표현할 때는 / ./ ../ 을 사용
    • ex) C:\Program Files\Java\a.txt에서 상대경로 표현 시
    • / => 루트 => C:\
    • ./ => 현재 폴더 => C:\Program Files\Java
    • ../ => 상위 폴더 => C:\Program Files

파일 입출력 예제

  • 현재 디렉토리의 input.txt를 읽어와 output.txt에 출력하는 예제
  • 파일 입출력을 하는 방법으로는 여러가지 방법이 있지만, 그 중에서 입력은 BufferedReader, 출력은 PrintWriter을 사용

D:\eclipse-workspace\JavaStudy\src\FILEIO

< Main.java >

package FILEIO;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.PrintWriter;
import java.io.FileWriter;

public class Main {

    public static void main(String[] args) throws IOException {

        String path = System.getProperty("user.dir") + "\\src\\FILEIO\\";
            // System.getProperty("user.dir")을 통해 
            // 현재 working dir까지 가져오고 그 뒤에 경로는 따로 추가해 줌
        System.out.println(path);

        BufferedReader br = new BufferedReader(new FileReader(path + "input.txt"));
        PrintWriter pw = new PrintWriter(new FileWriter(path + "output.txt"));
        	// new FileReader("D:\\eclipse-workspace\\JavaStudy\\src\\FILEIO\\input.txt")
        	// 이런식으로 전체 경로를 다 써줘도 됨

        String str;
        while(true) {
            str = br.readLine();	// BufferedReader을 이용해 한 줄 씩 불러오기
            if(str == null) break;
            pw.println(str);		// PrintWriter을 이용해 한 줄 씩 출력하기
        }

        br.close();
        pw.close();
    }
}

결과

input.txt에 있던 입력값들이 output.txt에 옮겨진 것을 확인할 수 있음

반응형

↓ 클릭시 이동

복사했습니다!