자바 자원 획득 경로
- public URL getResource (String name);
-
- public InputStream getResourceAsStream (String name);
이 name 은 자원 의 클래스 경로 입 니 다."/"루트 와 상대 적 으로 위치 합 니 다.getResource 는 URL 대상 을 통 해 자원 을 찾 을 수 있 으 며,getResource AsStream 은 이 자원 의 입력 흐름 을 참조 하 는 보증 프로그램 을 통 해 정확 한 위치 에서 데 이 터 를 추출 할 수 있 습 니 다.
그러나 진정 으로 사용 하 는 것 은 ClassLoader 의 이 두 가지 방법 이 아니 라 Class 의 getResource 와 getResource AsStream 방법 입 니 다.Class 대상 은 클래스 에서 얻 을 수 있 기 때 문 입 니 다.클 라 스 대상 의 이 두 가지 방법 은'의뢰'(delegate)가 클 라 스 로 더 를 불 러 오 는 것 이기 때문에 클 라 스 대상 의 이 두 가지 방법 만 사용 하면 된다.
따라서 this.getClass().getResource AsStream(String name)을 직접 호출 합 니 다. ;스 트림 가 져 오기,정적 화 방법 에 서 는 ClassLoader.getSystem ResourceAsStream(String name)을 사용 합 니 다. ; 。
다음은 classpath 와 현재 클래스 의 절대 경 로 를 얻 는 방법 입 니 다.당신 이 필요 로 하 는 자원 의 절대적 인 경 로 를 얻 기 위해 서 는 그 중의 몇 가지 방법 을 사용 해 야 할 수도 있 습 니 다.
- 1.this.getClass().getResource("")
현재 클래스 클 라 스 파일 의 URI 디 렉 터 리 를 가 져 왔 습 니 다.자기 포함 안 돼!
파일:/D:/workspace/jbpmtest 3/bin/com/test/
- 2.this.getClass().getResource("/")
현재 classpath 의 절대 URI 경 로 를 얻 었 습 니 다.
file:/D:/workspace/jbpmtest 3/bin/
- 3.this.getClass() .getClassLoader().getResource("")
현재 ClassPath 의 절대 URI 경 로 를 얻 었 습 니 다.
file:/D:/workspace/jbpmtest 3/bin/
- 4.ClassLoader.getSystemResource("")
현재 ClassPath 의 절대 URI 경 로 를 얻 었 습 니 다.
file:/D:/workspace/jbpmtest 3/bin/
- 5.Thread.currentThread().getContextClassLoader ().getResource("")
현재 ClassPath 의 절대 URI 경 로 를 얻 었 습 니 다.
file:/D:/workspace/jbpmtest 3/bin/
- 6.ServletActionContext.getServletContext().getRealPath(“/”)
웹 프로그램 에서 웹 프로그램의 루트 디 렉 터 리 를 얻 는 절대 경로 입 니 다.이렇게 하면 웹 프로그램 루트 디 렉 터 리 에 대한 경 로 를 제공 하면 포 지 셔 닝 자원 의 절대적 인 경 로 를 구축 할 수 있 습 니 다.
예 를 들 어:file:/D:/workspace/.metadata/.plugins/org.eclipse.wt.server.core/tmp0/wtpwebapps/WebProject
주의 점:
1.System.getProperty(user.dir)에 비해 현재 사용자 디 렉 터 리 의 상대 경 로 를 사용 하지 마 십시오.
2.URI 형식의 절대 경로 자원 을 사용 합 니 다.URI,URL,File 대상 으로 쉽게 전환 할 수 있 습 니 다.
3.가능 한 한 상대 적 인 classpath 의 상대 경 로 를 사용 합 니 다.절대 경 로 를 사용 하지 마 세 요.위의 ClassLoaderUtil 류 의 Public static URL getExtendeResource(String relativePath)방법 을 사용 하면 classpath 의 상대 경로 에 비해 모든 위 치 를 찾 을 수 있 는 자원 을 사용 할 수 있 습 니 다.
4.하 드 코딩 의 절대 경 로 를 사용 하지 마 세 요.현재 classpath 의 절대 경 로 를 ClassLoader 류 의 getResource(")방법 으로 얻 을 수 있 기 때 문 입 니 다.만약 당신 이 절대적 인 경 로 를 지정 해 야 한다 면,설정 파일 을 사용 하 는 것 도 하 드 인 코딩 보다 훨씬 좋 습 니 다!
CLASSPATH 이외 의 경 로 를 획득 하 는 방법:
URL base = this.getClass().getResource(""); //이 클래스 가 있 는 위 치 를 먼저 가 져 옵 니 다.예 를 들 어/home/popey/testjava/build/classes/net/
String path = new File(base.getFile(), ".../.../.../"+name).getCanonicalPath();//홈/popey/testjava/name
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.