我在web應用程序中有一個純java類,並且想要讀取WEB-INF
文件夾下的配置文件。我知道在類路徑中訪問文件的方式(WEB-INF/classes
文件夾)。由於WEB-INF/classes
文件夾是用於.class
文件,我只想將我的配置文件保留在WEB-INF
文件夾下。如何訪問java類中WEB-INF文件夾下的文件
任何人都可以告訴我如何從我的java類訪問它嗎?
我在web應用程序中有一個純java類,並且想要讀取WEB-INF
文件夾下的配置文件。我知道在類路徑中訪問文件的方式(WEB-INF/classes
文件夾)。由於WEB-INF/classes
文件夾是用於.class
文件,我只想將我的配置文件保留在WEB-INF
文件夾下。如何訪問java類中WEB-INF文件夾下的文件
任何人都可以告訴我如何從我的java類訪問它嗎?
您可以使用getRealPath()
方法ServletContext
獲得servlet的絕對路徑,然後將WEB-INF
附加到您獲得的路徑。我認爲這是非常基本的,也可能有其他一些答案。
我知道如何在'ServletContext'的幫助下做到這一點。但是我正在尋找的是在普通的java類中這樣做。 – Newbie
ServletContext.getResourceAsStream()將從相對於WAR文件根目錄的給定路徑加載文件。例如:
ServletContext ctx;
InputStream configStream = ctx.getResourceAsStream("/WEB-INF/config.properties");
這裏的主要問題是您需要訪問servlet上下文才能執行此操作。你可以在一個servlet或一個過濾器中使用它,但不能在應用程序後面的非Web組件中使用。您有幾種選擇:
沒有直接的方式在非普通的Java類這樣的web組件中做到這一點? – Newbie
不是我所知道的。一個普通的Java類不知道它是Web應用程序的一部分,所以它不可能訪問任何API來執行特定於Web應用程序的事情! –
hey you all care for context related file loading like application context , web.xml ,config and property file
下面是如何加載一個java文件中的任何類型的文件WEB-INF
下,但它存儲在另一stucture像一個子文件夾reportFile
的文件或子文件再次report01
-
fullpath is = /WEB-INF/reportFile/report01/report.xml
,我已經嘗試了許多可能性和加載閱讀這個XML文件...以上都沒有爲我工作,但是,這裏是將來使用的技巧...
In Action or inservice class you know interface implementation class
沒有imports
這也是很好的一部分。
classes
聲明文件對象File myClass = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getFile());
System.out.println("Finding calss path first then remove classes from the path " + myClass.getCanonicalPath().replaceFirst("classes", "")+"reportFIle/report01/reports.xml")
File f = new File(myClass.getCanonicalPath().replaceFirst("classes", "")+"reportFile/report01/reports.xml")
,你甚至可以用XML解析它解析器或做任何事情
document = docBuilder.parse(new File(myClass.getCanonicalPath().replaceFirst("classes", "")+"reportFile/report01/reports.xml"));
乾杯!
「新的FileInputStream( Utility.class.getClassLoader()的getResource(的KeyFileName).getPath() )」 爲我工作。
這裏的「實用工具」是我的類名,其中的代碼調用此行,「的KeyFileName」是我需要打開
如果配置文件是Java類的文件,爲什麼把它放在'WEB -INF'文件夾...爲什麼不在'src/main/resources'文件夾中並從那裏訪問它? –
我會說'getResourceAsStream'應該可以工作 – SJuan76
配置應該在src/main/resources中,並且在部署web應用程序時將被構建到class文件夾中。爲什麼需要將配置文件放入WEB-INF文件夾? – Thinhbk