SORU
8 Ocak 2015, PERŞEMBE


'Kaynağı arasındaki fark ne, Java URI, URL, Yol ve Dosya?

Bakıyorum bir parça Java kodu şu an gereken bir yol olarak bir Dize alır ve URL kullanarak URL resource = ClassLoader.getSystemClassLoader().getResource(pathAsString);, çağrı String path = resource.getPath() ve son olarak çalıştırır new File(path);.

Oh, ve aynı zamanda URL url = resource.toURI(); String file = resource.getFile() çağrıları var.

Şuan çoğunlukla terminoloji yüzünden kafam karıştı, sanırım. Birisi farklar üzerinden geçelim, ya da Aptal geçirmez malzeme için birkaç link veriniz? Özellikle URL ve URIKaynak Dosya için? Bana da aynı şey sırasıyla olması gerektiği gibi hissettiriyor

Arasındaki farkgetFile()vegetPath()burada açıklanmıştır: What's the difference between url.getFile() and getpath()? (İlginçtir ki her ikisi de muhtemelen benim ruh için bir sürü ekler Dize döndürür gibi...)

Şimdi, Eğer bir jar dosyası içinde sınıf veya bir paket başvuran bir belirleyicisi varsa, bu iki (bir dosya yani yol dizeleri) farklılık gösterir?

resource.toString() sonuçta jar:file:/C:/path/to/my.jar!/com/example/, (ünlem işareti not) verecek.

Arasındaki farkURİveURLJavaeski boşluk kodlamak değil mi? Cf. Files, URIs, and URLs conflicting in Java (Bu cevabı açıklargenel, kavramsalfark arasında iki dönem oldukça iyi: URIs identify and URLs locate;)

Son olarak - ve en önemlisi -neden File nesne; neden bir Kaynak (URL) yetmez mi ihtiyacım var?(Kaynak ve nesne var mı?)

Bu soru biraz düzensiz olduğunu, sadece ben bu karışıklığı yansıtır özür dilerim... :)

CEVAP
8 Ocak 2015, PERŞEMBE


Lütfen kendim cevap 100% yetkili görmüyoruz unutmayın, ama yine de İşte bazı yorumlar:

  • File Bir dosya veya dizini dosya sistemi üzerinden erişilebilir temsil eder
  • kaynakuygulama tarafından yüklenmiş olabilen bir veri nesnesi için generic term.
    • genelliklekaynaklardosyaları library / uygulaması ile dağıtılmış ve sınıf yükleme mekanizması onlar sınıf Yolu üzerinde bulunan () yüklenir
  • URL#getPath URL yolu parçası (protocol://host/path?query) toplar
  • JavaDoc başına döner URL#getFile path query

Java, URI genel tanımlayıcı kendisi işlemek için sadece bir veri yapısı.

Diğer yandan URL kaynak gerçekten bir belirleyicisi olduğunu ve aslında URLStreamHandlerdaki kayıtlı) kaynak okumak için özelliklere sahiptir.

Url dosya sistemi kaynak yol açabilir file:// protokol kullanarak her dosya sistemi kaynak URL gerçekleştirebilmesi (dolayısıyla File <->URL ilişkisi).

Ayrıca URL#getFile java.io.File ilgisiz olduğunu unutmayın.


Neden Dosya nesne; neden bir Kaynak değil (URL) yeterince ihtiyacım var mı?

Yeterli. Eğer sadece dosyaları ile çalışabilirsiniz bazı bileşen kaynak geçirmek istiyorsanız sadece, ondan File Alman gerek. Ancak tüm kaynak URL Files dönüştürülebilir.

Ve orada bir Kaynak nesne mi?

Görüş TOTEM Noktasından, sadece bir terim. Bazı çerçeveler gibi sınıf (Spring's Resource vs.) sağlamak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • MusicDeluxeTV

    MusicDeluxeT

    14 Mayıs 2010
  • PlayStation

    PlayStation

    16 Aralık 2005