
상대 경로 : 실행되는 위치(프로젝트 폴더)를 기반으로 경로를 정하는 것
절대 경로 : 루트에서 부터 경로를 찾는 것
파일을 실행하면 src에 있는 파일이 아니라 out에 있는 파일을 찾아 실행
툴마다 실행 위치가 다름 : jvm위치
실행 > 컴파일 된 후에 파일이 out에 생성됨
자바에서 실행이 되는 context는 프로젝트 : 스터디 내부에서 실행
윈도우의 경우 - 최상위 경로로 시작 : c드라이브 내부 표현에 \사용
c:\workspace\hello.txt
맥, 리눅스의 경우 - \로 시작함
\workspace\hello.txt
툴에서 경로 찾는 방법


상대 경로 확인


경로를 바꿔도 툴에서만 변경되니 변경하지 말 것
이스케이프 문자 - 자바에서 \는 문법의 키워드로 보지 말라는 것
ex) “ \”문자열”\”
주소를 입력할때는 \를 두번 사용해야 인식됨
package ex15; // 상대 경로 : 내 파일의 위치를 기반으로 경로를 정하는 것 // 절대 경로 : 루트에서부터 경로를 찾는 것 // 윈도우 : c:\workspace\hello.txt // 맥, 리눅스의 경로 : \workspace\hello.txt public class StreamEx05 { public static void main(String[] args) { System.out.println("안녕 난 \"홍길동\"이야"); System.out.println("c:\\workspace\\hello.txt"); } }

절대 경로로 찾기
package ex15; import java.io.BufferedReader; import java.io.FileReader; public class StreamEx05 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new FileReader("D:\\workspace\\java_lec\\study\\out\\production\\study\\ex15\\hello.txt")); String line = br.readLine(); System.out.println(line); } catch (Exception e) { e.printStackTrace(); } } }

절대 경로 - D:\\workspace\\java_lec\\study\\out\\production\\study\\ex15\\hello.txt
상대 경로로 찾기
package ex15; import java.io.BufferedReader; import java.io.FileReader; // 상대 경로 : 내 파일(.class)에 위치를 기반으로 경로 정하는 것 - 일반적 // 절대 경로 : 루트에서 부터 경로를 찾는것 // 윈도우 : 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\\out\\production\\study\\ex15\\hello.txt")); BufferedReader br = new BufferedReader(new FileReader("src\\ex15\\hello.txt")); String line = br.readLine(); System.out.println(line); } catch (Exception e) { e.printStackTrace(); } } }
package ex15; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; // 상대 경로 : 실행되는 위치(프로젝트폴더) 기반으로 경로 정하는 것 // 절대 경로 : 루트에서 부터 경로를 찾는것 // 윈도우 : 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")); String line = br.readLine(); System.out.println(line); BufferedWriter bw = new BufferedWriter(new FileWriter("input.txt")); bw.write("안녕"); bw.write("반가워\n"); bw.flush(); } catch (Exception e) { e.printStackTrace(); } } }
일반적 경로 - D:\workspace\java_lec\study
연습문제
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("D:\\workspace\\java_lec\\study\\src\\ex15\\input.txt")); outputStream = new PrintWriter(new FileWriter("D:\\workspace\\java_lec\\study\\src\\ex15\\output.txt")); String line; while ((line = inputStream.readLine()) != null) { outputStream.println(line); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } }

Share article