"... URI dimulai dengan file: /// tetapi URL dengan file: / ..." Apakah itu kasus untuk Windows dan Linux?
ptntialunrlsd
@ptntialunrlsd Itu pertanyaan yang bagus. Saya belum memeriksa, tapi saya kira ya.
Aleksandr Dubinsky
7
Tidak. URL hanyalah kasus khusus dari URI. Sebuah file URI dimulai dengan "file: //" dan kemudian daftar host (umumnya dihilangkan), diikuti oleh "/" dan path "foo / bar" (umumnya dimaksudkan untuk dibaca sebagai path absolut). Jadi "file: /// foo / var". URI yang terlihat seperti "file: / foo / bar" tidak benar. Lihat juga: ajukan skema URI
David Tonhofer
@DavidTonhofer Terima kasih atas penjelasan URI, tetapi itu tidak menjawab pertanyaan ptntialunrlsd . Apa yang dihasilkan oleh '... toURL (). ToString ()' di Linux? Juga, saya telah mengembalikan suntingan Anda karena mereka membuat jawaban saya lebih bertele-tele tanpa mengubah artinya.
Aleksandr Dubinsky
3
@AleksandrDubinsky Lebih baik meninggalkan pointer ke Oracle javadoc di .. lebih mudah untuk mengklik java.nio.file.Paths. Juga, pastikan untuk menjelaskan bahwa yang Anda maksud adalah implementasi di "URI vs URL". Anway java.net.URL.toString()menghasilkan hal yang sama pada Unix, sebagaimana mestinya. Ini hanya menampilkan satu "/" yang sangat salah (lihat skema file URI ). Saya kira ini di Jawa karena alasan, lebih baik digunakan java.net.URI. Itu benar menghasilkan "file: // [host] /" pada panggilan ke .toString().
di mana /your/file/herepath absolut ke file di Unix / Linux. Pada Windows akan berbeda saya pikir.
Robin Green
5
Itu tidak terlalu pintar, karena Anda harus menangani sendiri pelarian karakter yang tidak diizinkan dalam URL. Pada Windows (dan kemungkinan sistem operasi lainnya), Anda juga harus memodifikasi pemisah jalur dari jalur asli ke file.
jarnbjo
new URL("file:my.properties");
weberjn
Meskipun ini benar, ini tidak portabel karena tergantung pada jalur absolut.
lihat di sini untuk sintaks lengkapnya: http://en.wikipedia.org/wiki/File_URI_scheme
untuk sistem seperti unix akan seperti yang dikatakan @Alex file:///your/file/heresedangkan untuk sistem Windows adalahfile:///c|/path/to/file
Jangan lakukan itu secara manual. File.toURI().toURL()adalah cara untuk pergi
Sean Patrick Floyd
3
@SeanPatrickFloyd terkadang Anda tidak punya pilihan, seperti ketika ada dalam .propertiesfile.
Kereta luncur
@ArtB Saya tidak melihat bagaimana itu membuat perbedaan
Sean Patrick Floyd
2
@SeanPatrickFloyd, pertanyaan / jawaban ini muncul ketika Anda mencari java file url, yang dalam kasus saya berarti saya sedang mencari format file://URL, di Jawa, untuk digunakan dalam .propertiesfile, atau untuk mengetik secara manual, dll.
daveloyall
1
@SeanPatrickFloyd terkadang Anda tidak memiliki akses ke kode sumber, hanya ke properti, dan file://sayangnya diperlukan. Menjadi ketergantungan sistem bukanlah masalah besar karena ini adalah properti yang bisa berubah.
Menggunakan Java 7:
Namun, Anda mungkin ingin mendapatkan
URI
. Misalnya,URI
diawali denganfile:///
tetapi dengan URLfile:/
(setidaknya, itulah yangtoString
menghasilkan).sumber
java.nio.file.Paths
. Juga, pastikan untuk menjelaskan bahwa yang Anda maksud adalah implementasi di "URI vs URL". Anwayjava.net.URL.toString()
menghasilkan hal yang sama pada Unix, sebagaimana mestinya. Ini hanya menampilkan satu "/" yang sangat salah (lihat skema file URI ). Saya kira ini di Jawa karena alasan, lebih baik digunakanjava.net.URI
. Itu benar menghasilkan "file: // [host] /" pada panggilan ke.toString()
.sumber
sumber
/your/file/here
path absolut ke file di Unix / Linux. Pada Windows akan berbeda saya pikir.new URL("file:my.properties");
sumber
lihat di sini untuk sintaks lengkapnya: http://en.wikipedia.org/wiki/File_URI_scheme untuk sistem seperti unix akan seperti yang dikatakan @Alex
file:///your/file/here
sedangkan untuk sistem Windows adalahfile:///c|/path/to/file
sumber
File.toURI().toURL()
adalah cara untuk pergi.properties
file.java file url
, yang dalam kasus saya berarti saya sedang mencari formatfile://
URL, di Jawa, untuk digunakan dalam.properties
file, atau untuk mengetik secara manual, dll.file://
sayangnya diperlukan. Menjadi ketergantungan sistem bukanlah masalah besar karena ini adalah properti yang bisa berubah.Anda juga bisa menggunakan
sumber
jar:file:/home/user/a/b/c/foo.jar!/com/example/stuff/config.txt
.