
상대 경로
- 실행되는 위치(일반적으로 프로젝트 폴더)를 기반으로 경로를 정하는 것이다.
- 현재 작업 중인 디렉토리를 기준으로 상대적인 위치이다.
- 상대 경로 예시
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