2010-03-16 2 views

답변

23

웹 응용 프로그램 상대 경로는 /STUFF/read.txt입니다.

ServletContext#getRealPath()을 사용하면 상대 웹 경로를 절대 로컬 디스크 파일 시스템 경로로 변환 할 수 있습니다. 이 방법을 사용하면 실제 실행중인 웹 컨텍스트에 대해 실제로 알지 못하는 일반적인 내용 인 java.io에서 더 사용할 수 있습니다.

String relativeWebPath = "/STUFF/read.txt"; 
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath); 
File file = new File(absoluteDiskPath); 
// Do your thing with File. 

그러나 서버가 디스크 대신 메모리에서 WAR를 확장하도록 구성된 경우이 방법은 작동하지 않습니다. getRealPath()을 사용하면 항상이 경고가 나타나므로 실제 응용 프로그램에서는 권장되지 않습니다. 당신이 궁극적으로 당신이 가능성이 FileInputStream을 사용했을있는 그 파일의 InputStream을 받고 필요한 모든, 당신은 더 나은 ServletContext#getResourceAsStream()를 사용하려는 경우 InputStream로 직접 얻을 수 있습니다 :

String relativeWebPath = "/STUFF/read.txt"; 
InputStream input = getServletContext().getResourceAsStream(relativeWebPath); 
// Do your thing with InputStream. 
+2

나는 언젠가는 'FileNotFoundException'에 직면하여 노력했지만 시간이 낭비되었고 로컬에서는 작동하지만 웹에서는 작동하지 않습니다. 좌절있어 ..하지만 결국 나는 당신의 대답을 가로 질러 와서 .. 시도가 끝내 .. 정말 고마워 .. :) –

1

를이 클래스 경로에있는 경우 , 또는 폴더 경로를 클래스 패스에 추가 할 수 있습니다. about : ClassLoader classLoader = Thread.currentThread(). getContextClassLoader(); InputStream input = classLoader.getResourceAsStream (fileName);

관련 문제