java. io. File 의 절대 경로 와 상대 경로 입 니 다.

3381 단어 JAVAIO
 
java. io. File 의 절대 경로 와 상대 경로 입 니 다.
태그: File 클래스 상대 경로 절대 경로
2013-07-17 14:52 
1122 명 읽 기 
댓 글 (0) 
수장 하 다 
고발 하 다.
 
분류:
 
java(21) 
저급한 오류 로 인 한 File 의 절대 경로 와 상대 적 인 경로 에 대한 사고 라 고 할 수 있 습 니 다.상대 적 인 경로 에서 파일 을 만 들 려 고 시도 할 때 프로그램 오류 가 발생 했 습 니 다. 자바. io. FileNotFoundException:..\outFile\\outFilessa 2176.77229359617. doc (시스템 에서 지정 한 경 로 를 찾 을 수 없습니다.)원래, 새로운 파일 ("  상대 경로 ")  File 인 스 턴 스 만 만 들 었 을 뿐 경 로 를 만 드 는 기능 이 없습니다. 따라서 상대 적 인 경로 에서 대상 파일 을 만 들 려 면 이 경로 가 실제 존재 하 는 지 확인 해 야 합 니 다. 그렇지 않 으 면 제 전철 을 밟 아야 합 니 다.
자신의 상대 적 인 경로 개념 이 부족 하 다 는 것 을 깨 닫 고 구 글 을 시작 했다. 좋 은 글 을 발견 하고 과감하게 바 뀌 었 다.
다음으로 이동:http://www.blogjava.net/zhangchao/archive/2009/04/15/265644.html
File 클래스 는 파일 이나 폴 더 를 구성 하 는 클래스 입 니 다. 구조 함수 에서 String 형식의 매개 변 수 를 입력 하여 파일 이 있 는 경 로 를 표시 하 는 데 사 용 됩 니 다. 이전 에는 절대 경 로 를 매개 변수 로 사용 하 였 으 나, 사실 여기 서도 상대 경 로 를 사용 할 수 있 습 니 다. 절대 경 로 를 사용 하지 않 아 도 파일 을 쉽게 찾 을 수 있 습 니 다. 그러면 상대 경 로 를 사용 한 jvm 은 파일 을 어떻게 찾 습 니까?
jdk Doc 에 따 르 면 절대 경로 이름 은 완전한 경로 이름 이 며 다른 정보 없 이 자신 이 표시 한 파일 을 찾 을 수 있 습 니 다.반면 상대 경로 명 은 다른 경로 명 에서 온 정 보 를 사용 해 설명 해 야 한다.기본 상황 에서 java.io 가방 의 클래스 는 항상 현재 사용자 디 렉 터 리 에 따라 상대 경로 이름 을 분석 합 니 다.이 디 렉 터 리 는 시스템 속성 user.dir 지정 자바 가상 컴퓨터 호출 디 렉 터 리. "
상대 경 로 는 말 그대로 특정한 경로 에 비해 어떤 경로 에 비해 알 아야 합 니까? 위 jdk 문서 에서 말 한 이 경 로 는 '현재 사용자 디 렉 터 리' 즉 '자바 가상 컴퓨터 의 호출 디 렉 터 리' 입 니 다. 이 경 로 는 우리 가 jvm 를 어디서 호출 하 는 경로 인지 더 잘 알 수 있 습 니 다. 예 를 들 어:
자바 원본 파일 Example. java 가 d 디스크 루트 디 렉 터 리 에 있다 고 가정 하면 패키지 정 보 를 포함 하지 않 습 니 다. 명령 행 창 에 들 어가 서 "d"명령 을 사용 하여 d 디스크 루트 디 렉 터 리 로 전환 한 다음 "javac Example. java"로 이 파일 을 컴 파일 합 니 다. 컴 파일 한 후,d 디스크 루트 디 렉 터 리 에서 "Example. class"파일 을 자동 으로 생 성 합 니 다. "자바 Example"을 호출 하여 프로그램 을 실행 하고 있 습 니 다. 이 때 jvm 을 시 작 했 습 니 다. 이 jvm 은 d 디스크 루트 디 렉 터 리 에서 시작 되 었 기 때문에 이 jvm 에서 불 러 온 프로그램 에서 File 류 의 상대 경 로 는 이 경로 에 대한 것 입 니 다.즉, d 디스크 루트 디 렉 터 리: D:\. 동시에 '현재 사용자 디 렉 터 리' 도 D:\. System. getProperty ('user. dir') 에 있 습 니 다.시스템 변수 'user. dir' 가 저장 한 것 도 이 값 입 니 다.
"Example. class"를 다른 경로 로 이동 시 키 는 동시에 "자바 Example"명령 을 실행 하여 jvm 을 시작 할 수 있 습 니 다. 이 "현재 사용자 디 렉 터 리"는 끊임없이 변화 하고 있 습 니 다. 그 경 로 는 우리 가 jvm 을 어디서 시작 하 는 지 와 일치 합 니 다.
이러한 것들 을 알 게 되면 우 리 는 상대 적 인 경 로 를 사용 하여 파일 을 만 들 수 있 습 니 다. 예 를 들 어:
Filefile = new File(“a.txt”);
File.createNewFile();
jvm 이 'D:\' 에서 시작 되 었 다 고 가정 하면 a. txt 는 D:\a. txt 에서 생 성 됩 니 다.
그 밖 에 이 매개 변 수 는 자주 사용 하 는 경로 표시 방법 도 사용 할 수 있 습 니 다. 예 를 들 어 "."또는 ".\"는 현재 디 렉 터 리 를 대표 합 니 다. 이 디 렉 터 리 는 jvm 시작 경로 입 니 다. 따라서 다음 코드 는 현재 디 렉 터 리 의 전체 경 로 를 얻 을 수 있 습 니 다.
File f = new File(“.”);
String absolutePath = f.getAbsolutePath();
System.out.println(absolutePath);//D:\
마지막 으로 eclipse 에서 의 상황 을 말씀 드 리 겠 습 니 다.
Eclipse 에서 jvm 을 시작 하 는 것 은 프로젝트 루트 경로 에서 시 작 됩 니 다. 예 를 들 어 블 로그 라 는 항목 이 있 습 니 다. 전체 경 로 는 D:\work\IDE\workspace\\blog 입 니 다. 그러면 이 경 로 는 jvm 의 시작 경로 입 니 다. 따라서 상기 코드 가 eclipse 에서 실행 되면 출력 결 과 는 'D:\work\IDE\workspace\blog' 입 니 다.
Tomcat 의 상황.
tomcat 에서 웹 애플 리 케 이 션 을 실행 하면 다음 과 같은 코드 를 사용 합 니 다.
File f = new File(“.”);
String absolutePath = f.getAbsolutePath();
System.out.println(absolutePath);
그러면 출력 된 것 은 tomcat 의 빈 디 렉 터 리 입 니 다. 제 기 계 는 바로 " D:\\work\server\jakarta - tomcat - 5.0.28\bin\. "를 통 해 tomcat 서버 가 bin 디 렉 터 리 에서 jvm 를 시작 한 것 을 알 수 있 습 니 다. 사실은 bin 디 렉 터 리 의"catalina. bat "파일 에서 jvm 을 시작 한 것 입 니 다.

좋은 웹페이지 즐겨찾기