'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
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 URLStreamHandler
daki 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 File
s 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.
'kamu, varsayılan olarak korumalı...
Yumuşak bir referans ve Java zayıf bir...
Kurallı, isim, basit isim ve Java Ders...
'getPath arasındaki fark ne(), ge...
'bağımlılıkları arasındaki fark n...