.war 파일의 루트에 jsp 파일이 있습니다. 그리고 STUFF라는 폴더가 있습니다.서블릿 (웹 앱)에서 상대 경로를 어떻게 알 수 있습니까?
STUFF 내부의 read.txt 파일에 액세스하려면 어떻게해야합니까?
/Name_of_war/STUFF/read.txt가 올바른 경로입니까?
.war 파일의 루트에 jsp 파일이 있습니다. 그리고 STUFF라는 폴더가 있습니다.서블릿 (웹 앱)에서 상대 경로를 어떻게 알 수 있습니까?
STUFF 내부의 read.txt 파일에 액세스하려면 어떻게해야합니까?
/Name_of_war/STUFF/read.txt가 올바른 경로입니까?
웹 응용 프로그램 상대 경로는 /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.
를이 클래스 경로에있는 경우 , 또는 폴더 경로를 클래스 패스에 추가 할 수 있습니다. about : ClassLoader classLoader = Thread.currentThread(). getContextClassLoader(); InputStream input = classLoader.getResourceAsStream (fileName);
나는 언젠가는 'FileNotFoundException'에 직면하여 노력했지만 시간이 낭비되었고 로컬에서는 작동하지만 웹에서는 작동하지 않습니다. 좌절있어 ..하지만 결국 나는 당신의 대답을 가로 질러 와서 .. 시도가 끝내 .. 정말 고마워 .. :) –