자바 프로젝트 경로 가 져 오기

3989 단어 자바

상대 경로 획득
설명: 상대 경로 (즉, 누 구 를 상대 하 는 지 밝 히 지 않 음) 는 다음 과 같은 방식 으로 얻 을 수 있 습 니 다 (일반적인 자바 프로젝트 든 웹 프로젝트 든)
   String relativelyPath=System.getProperty("user.dir"); 
상기 상대 경로 에서 자바 프로젝트 의 파일 은 프로젝트 의 루트 디 렉 터 리 에 비해
웹 프로젝트 의 파일 경 로 는 웹 서버 에 따라 다 릅 니 다. (tomcat 는 tomcat 설치 디 렉 터 리 에 비해 \ bin)
두 가지 로 딩 디 렉 터 리 의 획득 (즉, 실행 할 때 특정한 클래스 를 가 져 올 때 디 렉 터 리 를 가 져 옵 니 다)
1.1) 일반적인 방법 1 (일반적인 자바 프로젝트 든 웹 프로젝트 든 가방 경 로 를 볼 수 있 는 1 급 디 렉 터 리 를 먼저 찾 습 니 다)
   
  
 InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt"); 

 
(test. txt 파일 의 경 로 는 프로젝트 이름 \ src \ test. txt 입 니 다. 클래스 TestAction 이 있 는 가방 의 1 급 디 렉 터 리 는 src 디 렉 터 리 아래 에 있 습 니 다)
   
위 에 서 는 TestAction, test. txt 를 해당 하 는 클래스 이름과 파일 이름 으로 바 꾸 면 됩 니 다.
1.2) 통용 방법 2 (이 방법 은 1.1 의 방법 과 유사 하 며, 다른 것 은 이 방법 이 반드시 '/' 로 시작 해 야 한 다 는 것 이다) 
  
 InputStream is=Test1.class.getResourceAsStream("/test.txt"); 

 
(test. txt 파일 의 경 로 는 프로젝트 이름 \ src \ test. txt 이 며, 클래스 Test 1 이 있 는 가방 의 1 급 디 렉 터 리 는 src 디 렉 터 리 아래 에 있 습 니 다)
   
3 웹 프로젝트 루트 디 렉 터 리 획득 (발표 후)
1 servlet 에서 출발
init 방법 에 servlet 를 만 들 수 있 습 니 다.
   ServletContext s1=this.getServletContext();
   String temp=s1.getRealPath("/"); (  ) 

 
결과: D: \ 도구 \ Tomcat - 6.0 \ webapps \ \ 002ext \ (002 ext 는 프로젝트 이름)
s1. getRealPath (") 를 호출 했다 면 D: \ 도구 \ Tomcat - 6.0 \ webapps \ \ 002 를 출력 합 니 다.ext ("\" 가 하나 빠 졌 습 니 다)
2 httpServletRequest 에서 출발
   
String cp11111=request.getSession().getServletContext().getRealPath("/");

 
결과: D: \ 도구 \ Tomcat - 6.0 \ webapps \ \ 002ext\
4 classpath 가 져 오기 (Eclipse 에서 src 나 classes 디 렉 터 리 를 얻 기 위 한 경로)
방법 1
  
    Thread.currentThread().getContextClassLoader().getResource("").getPath()
  eg: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
   System.out.println("t---"+t);
     :t---/E:/order/002_ext/WebRoot/WEB-INF/classes/

 
  
방법 2
    
     JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse src       ,  )
   eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
   System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
     : JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/

 
 
또한 파일 을 한 가방 에 넣 으 려 면 다음 과 같은 방식 으로 파일 을 얻 을 수 있 습 니 다 (이 가방 의 마지막 디 렉 터 리 로 먼저 찾 습 니 다).
   eg String p2=JdomParse.class.getResource("").getPath(); 
   System.out.println("JdomParse.class.getResource---"+p2);
     : JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse src   jdom    )

 
 
============
[오리지널] ClassName. class. getClassLoader 에 대한 몇 가지 설명.   
항상 ClassName. class. getClassLoader (). getResourceAsStream (") 을 통 해 properties 파일 을 얻 기 를 원 합 니 다. 보통 ClassName. class. getClassLoader (). getResourceAsStream (") 은 WEB - INF 의 하위 디 렉 터 리 를 얻 습 니 다. 예 를 들 어 ClassName. class. getClassLoader (). getResourceAsStream ("db. properties"). Tomcat 에서 추가 할 수 있 습 니 다.. / "상부 디 렉 터 리, 즉 WEB - INF 디 렉 터 리 를 가 져 오 면 properties 를 WEB - INF 에 넣 고 통일 적 으로 관리 할 수 있 습 니 다. 그러나 WLS 는 인식 하지 않 습 니 다.  
또 다른 재래식 방법 은 classLoader 로 돌아 가지 않 고 ClassName. class. getResourceAsStream () 으로 직접 돌아 가 는 것 입 니 다. 그리고 여러 개의 ".. /" (6 개 이하) 를 통 해 해당 상위 디 렉 터 리 로 돌아 가 는 것 입 니 다.  
물론 클래스 가 HttpServlet 로 확장 되면 getServletContext (). getRealPath ("/") 를 통 해 웹 배치 디 렉 터 리 의 절대 경 로 를 얻 을 수 있 습 니 다.
 

좋은 웹페이지 즐겨찾기