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