簡體   English   中英

Linux上的Java File.toURI()問題

[英]Java File.toURI() issue on Linux

我正在嘗試獲取要放入HTML文檔中的文件的URI,然后再處理該文件以從該HTML中讀取圖像位置(位於系統臨時目錄中)並對圖像進行一些處理。

它在Windows上可以正常工作,但是在Linux上,我遇到了無法找到HTML圖像位置進行后續處理的問題。 我認為問題如下...

在Windows上,File.toURI()。toString()命令正在返回(對於C:\\ temp \\ image.jpeg):

文件:/ C:/temp/image.jpeg

因此,在Linux上,它大概會返回(對於/tmp/image.jpeg):

文件://tmp/image.jpeg

HTML解析器將其解釋為tmp / image.jpeg(即相對路徑),因此無法找到。

是否有一個簡單的解決方法,還是我需要手動強制URI正確(我猜file:///tmp/image.jpeg和file:// C:/temp/image.jpeg)?

您可以嘗試執行以下操作:

String imageUri = File.toUri().toString().replaceFirst("^file:/", "");

正則表達式應該可以幫助您在Windows和Linux上獲取文件資源

正如我在對您的問題的評論中提到的: 不要發布file: HTML文檔的URI。

請相對於網站的根目錄使用相對URI或絕對URI

Google詳細介紹了發布網站時相對和絕對URI的區別。

現在,如果您急切地使用file:URIs ,那么您可能想要嘗試獲取規范路徑。 地獄,規范的路徑是人們想要用來發布文件位置的首選路徑類型(如我之前提到的在網絡上發布時除外):

// java-like pseudocode:

String myFile = ... // some path, relative or absolute, to a file in an accessible file system

URI = (new File(myFile)).getCanonicalFile().toURI();

檢查File / getCanonicalFile / getCanonicalPath上的Oracle / Sun javadoc信息以了解詳細信息。

由於您提到的是HTML解析器將文件視為URI,所以這可能仍不能解決問題:URI是相對的(但您沒有提及正在使用的HTML解析器 。)

最終,您可以發布相對於文檔根目錄的URL,而不是使用file: URI。 這些URI絕不會那樣使用。

您要提供絕對路徑,需要將圖像導入到您的項目中,然后將您項目中的相對路徑提供給代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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