![](/img/trans.png)
[英]Relative path for getting file in Tomcats webapps directory from a deployed web application
[英]Read a file from Tomcat webapps on different Tomcats
考慮以下幾點:我得到了一個csv文件。 該文件存儲在tomcat wepapps目錄中。 該目錄的路徑取決於所使用的計算機。 有些用戶為其Tomcat使用不同的位置並使用不同的名稱。 我要實現以下目標。
通過Spring,我執行了以下操作:我執行了一個操作,該操作將一些數據從csv導入數據庫。
<bean id="setCsvPathAction" class="custom.action.importcsv.SetCsvPathAction">
<property name="csvPath" value="C:/temp/test.csv"/>
</bean>
這對我來說很好。 為了使該路徑對其他人更可配置,我得到了一個system.properties文件。 使用此文件,您可以輕松地覆蓋屬性:
setCsvPathAction.csvPath=#{tomcat_home}/webapps/test.csv
那就是我想要的。 我希望該路徑位於Tomcat webapps目錄中。 上面的方法不起作用。 你有什么提示如何實現這一目標嗎?
大多數使用tomcat的人都會設置CATALINA_HOME環境變量。 您可以查詢此環境變量並檢索值。
String tomcat_home = System.getenv("CATALINA_HOME");
if(tomcat_home){
setCsvPathAction.csvPath=tomcat_home+"/webapps/test.csv"
}
注意:不能保證在每個使用tomcat的系統上都設置此環境變量
有關getenv()的更多信息-http: //docs.oracle.com/javase/7/docs/api/java/lang/System.html#getenv%28%29
如果要放在web apps文件夾中,則也可以使用類加載器來獲取本地路徑,因此您無需進行任何配置。
someObject.getClass()。getClassLoader()。getResourceAsStream(“ path / refferenced / to / app / root /”);
.properties文件的解決方案是:$ {catalina.home}接下來,我需要一個獨立於系統環境的FileInputStream。 我嘗試了以下方法:
public class environmentTest {
public static void main(final String[] args) {
System.out.println(System.getenv("CATALINA_BASE"));
}
}
null在控制台上打印。
Person類包含jpg文件的名稱。 該文件位於webapps文件夾中。 我希望路徑獨立於所使用的計算機。 我嘗試了以下方法:
File file = new File(System.getenv("CATALINA_HOME") + "/webapps/" + person.getPhoto());
FileInputStream fileInputStream = new FileInputStream(file);
遺憾的是,這是行不通的,因為正如unekwu所說,此環境變量未在所有系統上設置。 您知道在這種情況下我能做什么嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.