簡體   English   中英

無法從資源獲取絕對文件路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM