[英]Not getting absolute file path from resources
我在/ src / main / resources下有一個模板文件,我想獲取它的絕對路徑,問題是我得到的是相對路徑而不是絕對路徑。
在項目中加載模板后,我需要獲取計算機中文件的絕對路徑。 我現在正在做的是:
URL location = this.getClass().getResource("/template/template2.vm");
String fullPath = location.getPath();
這將返回:(java.lang.String)vfs:/content/MyProyect-1.0.0-SNAPSHOT.war/WEB-INF/classes/templates/template2.vm
如果在Eclipse中進行操作,它將提供完整的路徑,但是在NetBeans中且沒有IDE進行部署將返回此結果。 我正在使用jboss進行部署。
我也嘗試過
String fullPath = location.getAbsolutePath();
我一直得到這個結果。
如前所述,JBoss正在使用虛擬文件系統(VFS)。 您可以使用jboss特定的庫jboss-vfs獲取文件的絕對路徑。
URL rootUrl = classLoader.getResource(path);
VirtualFile jbossVirtualFile = (VirtualFile) rootUrl.getContent();
File fileSystemFile = jbossVirtualFile.getPhysicalFile();
String absolutePathToFile = fileSystemFile.getPath();
即時通訊使用jboss-vfs 3.2.4.Final。
或者,如果您需要讀取文件並且不關心路徑使用
classLoader.getResourceAsStream(path)
(這不適用於dirs。)
這總是地方性的嗎? 如果可以,您可以這樣做:
URL location = this.getClass().getResource(/template/template2.vm);
File f = new File(location.toUri());
String fullPath = f.getAbsolutePath();
我認為這是不可能的。 JBoss使用不同的系統來存儲部署的文件。 vfs是其中之一。 幾個月前,我遇到了同樣的問題,即使經過大量研究也無法解決。 最后,當啟動jboss指向所需目錄時,我添加了一個環境變量(我需要加載部署之外的.properties文件)。 看到這里: https : //community.jboss.org/wiki/PropertiesService
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.