
상대 경로
- 실행되는 위치(일반적으로 프로젝트 폴더)를 기반으로 경로를 정하는 것이다.
- 현재 작업 중인 디렉토리를 기준으로 상대적인 위치이다.
- 상대 경로 예시
BufferedReader br = new BufferedReader(new FileReader("D:\\workspace\\java_lec\\study\\src\\ex15\\hello.txt"));절대 경로
- 루트에서 부터 경로를 찾는 것을 말한다.
- 파일이나 폴더의 전체 경로이다.
- 절대 경로 예시
BufferedReader br = new BufferedReader(new FileReader("src\\ex15\\hello.txt"));파일 읽기와 파일 쓰기
1. 파일 읽기는 생성되어 있는 파일을 읽어오는 과정이다!
   → 코드로는 
PrintWriter(new FileWriter("output.txt")); 를 사용한다!
2. 파일 쓰기는 파일을 생성하는 과정이다!
   → 코드로는 BufferedReader(new FileReader("input.txt")); 를 사용한다!
위의 코드는 예시 코드이다!윈도우와 맥은 서로 경로를 찾을 때 차이점이 있는데?!
윈도우 : C:\\workspace\\hello.txt (윈도우의 역슬래시는 이스케이프 문자라 두 개를 입력) 
맥, 리눅스 : /workspace/hello.txt
윈도우는 역슬래시! 맥, 리눅스는 슬래시! 를 사용한다!
예제 코드
- 기본 예제 코드 1
package ex15;
import java.io.*;
// 상대 경로 : 실행되는 위치(일반적으로 프로젝트 폴더)를 기반으로 경로를 정하는 것 (내 파일을 out의 파일에서 찾는다!)
// 절대 경로 : 루트에서 부터 경로를 찾는 것 (아래의 파일 경로)
// 윈도우 : C:\\workspace\\hello.txt
// 맥, 리눅스 : /workspace/hello.txt
// 상대 경로와 절대 경로의 차이점을 명확하게 알고 접근 해야한다. 타겟 설정의 실수가 나지 않도록 해야 하기 때문이다.
public class StreamEx05 {
    public static void main(String[] args) {
        try {
            //BufferedReader br = new BufferedReader(new FileReader("D:\\workspace\\java_lec\\study\\src\\ex15\\hello.txt")); // 절대 경로
            BufferedReader br = new BufferedReader(new FileReader("src\\ex15\\hello.txt")); // 상대 경로
            BufferedWriter bw = new BufferedWriter(new FileWriter("input.txt"));
            bw.write("안녕 반가워\n");
            bw.flush();
            String line = br.readLine();
            System.out.println(line);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}- 기본 예제 코드 2
package ex15;
import java.io.*;
public class CopyLines {
    public static void main(String[] args) throws IOException {
        BufferedReader inputStream = null;
        PrintWriter outputStream = null;
        try {
            inputStream = new BufferedReader(new FileReader("input.txt")); // FileReader에 BufferedReader를 연결한다.
            outputStream = new PrintWriter(new FileWriter("output.txt"));  // FileWriter의 출력이 PrinterWriter의 입력이 된다.
            String l;
            while ((l = inputStream.readLine()) != null) { // 한 줄 단위로 입출력할 수 있다.
                outputStream.println(l);
            }
        } finally {
            if (inputStream != null) {
                inputStream.close();
            }
            if (outputStream != null) {
                outputStream.close();
            }
        }
    }
}Share article