2011-05-23 247 views

回答

228
new File(path).toURI().toURL(); 
+8

對於java 7+: Paths.get(「path」,「to」,「stuff」).Uri()。toURL() – Ajax 2015-11-19 00:32:59

19
new URL("file:///your/file/here") 
+1

其中'/ your/file/here'是Unix/Linux上文件的絕對路徑。在Windows上,我認爲會有所不同。 – 2011-05-23 14:23:26

+5

這不是很聰明,因爲你必須處理自己不允許在URL中允許的字符轉義。在Windows(以及其他操作系統)上,您還必須修改路徑分隔符從本機路徑到文件。 – jarnbjo 2011-05-23 14:25:21

+0

'new URL(「file:my.properties」);' – weberjn 2017-10-04 14:03:56

34
new File("path_to_file").toURI().toURL(); 
2

看看這裏的完整語法:http://en.wikipedia.org/wiki/File_URI_scheme 類Unix系統將它作爲@Alex說file:///your/file/here而對於Windows系統將file:///c|/path/to/file

+5

手動做。 'File.toURI()。toURL()'是要走的路線 – 2011-05-23 14:25:12

+2

@SeanPatrickFloyd有時你沒有選擇,就像它在'.properties'文件中一樣。 – ArtB 2014-01-30 19:24:48

+0

@ArtB我看不出有什麼區別 – 2014-01-31 08:04:40

8
File myFile=new File("/tmp/myfile"); 
URL myUrl = myFile.toURI().toURL(); 
3

您也可以使用

[AnyClass].class.getResource(filePath) 
+1

,但前提是該文件存在於類路徑中 – aepurniet 2014-02-06 21:20:02

+1

如果可以在jar中找到「filePath」,則生成的URL就像'jar:file:/home/user/a/b/c/foo.jar!/ com /例如/東西/ config.txt'。 – 2015-09-02 14:39:08

22

使用Java 7:

Paths.get(string).toUri().toURL(); 

不過,你可能希望得到一個URI。例如,一個URI開始於file:///,但一個URL與file:/(至少,這是什麼toString生產)。

+0

「... URI以file:///開頭,但帶有文件的URL:/ ...」 這是Windows和Linux的情況嗎? – ptntialunrlsd 2015-07-13 09:19:51

+0

@ptntialunrlsd這是一個很好的問題。我沒有檢查過,但我想是的。 – 2015-07-13 15:26:32

+4

編號。URL只是URI的特例。文件URI以「file://」開始,然後列出主機(通常省略),後跟「/」和路徑「foo/bar」(一般意思是讀爲絕對路徑)。因此「file:/// foo/var」。看起來像「file:/ foo/bar」的URI不正確。另請參閱:[文件URI方案](https://en.wikipedia.org/wiki/File_URI_scheme) – 2015-09-02 14:00:08

相關問題