2009-12-10 10 views
13

Çalıştığım bir uygulama, ağ dosya paylaşımlarındaki dosyalara erişmeyi içerir ve dosyaların konumlarını belirtmek için URI'leri kullanıyoruz.dosya: URI'ler ve Slash'ler

Dosya hakkındaki bilgilerim: URI, + yolu biçiminde olmalıdır. Bir Windows ağ paylaşımı durumunda, bu yol \\servername\dir\file gibi bir şey gibi görünür, bu nedenle sonuç URI'si file:////servername/dir/file olur.

Bu, Java'nın URI class için harika çalışıyor gibi görünüyor, ancak Win32 API'sinin bir "yetki bileşeni" olduğu için Java'nın reddettiği bir file://servername/dir/file stil URI'si gibi görünüyor.

Ağ paylaşımı URI'larını doğru olarak anlıyor muyum? Java olmadan otorite hakkında şikayette bulunmanın bir yolu belirtmenin başka bir yolu var mı?

Düzenleme: Diğer :) karşı: (ör dosyayı diğer konumları belirtmek için URI şeması-parçası faydalanmak amacıyla Biz umuyorduk, URI'lerinin olarak yolları saklamak mümkün. belirttiği gibi Java sadece URI'ları ile kendi sorunları olabilir gibi Ancak,

cevap

14

Öyle görünüyor ... görünüyor Java is wrong:

Yanlış: file:////applib/products/a%2Db/abc%5F9/4148.920a/media/start.swf
Doğru: file://applib/products/a-b/abc_9/4148.920a/media/start.swf

Açık UNC paths in Java:

URI sınıfı UNC yolları reasonab'ı işler. iyi, ama bazı sorunları var. Başka bir deyişle

new File("//SERVER/some/path").toURI().toString() 
               -> "file:////SERVER/some/path 

, URI URI yolu bileşeninde tüm UNC yolunu saklar ve sunucu/yetki bileşeni bırakır: Java sınıfı kütüphaneler olarak, bir UNC yolu dize gösterimi aşağıdaki gibidir boş. Sürekli olarak bu dize gösterimini kullandığınız sürece java.net.URI ile başarılı bir şekilde etkileşime girebilirsiniz.

+0

Hızlı yanıtınız için teşekkür ederiz. İkinci bağlantı özellikle yardımcı oldu. Bütün yolun URI'nin 'yol' bölümünde saklanacağı bana mantıklı gelse de, Java'nın bunu tutarsız bir şekilde yaptığını görebiliyorum, bu yüzden buna dikkat edeceğim. – Sammy1Am

+0

Aslında bildiğim kadarıyla, dosya URL şeması çift eğik çizgi gerektirmiyor, ancak sadece tek bir eğik çizgi. Vahşi doğada da sık sık görülür. – hippietrail

+0

https://tools.ietf.org/html/rfc3986#section-3 "Yetki mevcut değilse, yol iki eğik çizgi karakteri ile başlayamaz" –