Java.nio.file.Path nesnesini java.io.File dosyasından alın


215

Bir Path nesnesini bir alandan almak mümkün mü java.io.File?

Bir yolu kullanarak bir dosyaya yol dönüştürebileceğini biliyorum toFile(), ama tam tersini bulamadım. Java 6 veya daha düşük bir sürümde bunu yapmanın bir yolu var mı?


API belgelerine baktınız mı?
Vivin Paliath

Evet, çözüm ve resolSibling yöntemlerini gördüm, ancak bu tam olarak dosyadan (veya dizeden) yola dönüşmedi, aksine bir şekilde gizledi.
Karlovsky120

1
İşte belgeler de atıfta bulunuyor @VivinPaliath.
Algı

1
Mümkün olan en aptal sorunun nasıl olduğunu hayrete düşürüyor (yani, hadi, dokümantasyondaydı, kısa google arama buna cevap verirdi) sitedeki en fazla noktayı netleştiriyor. : D
Karlovsky120

@ Karlovsky120 kendiniz google denemek isterseniz sizi şaşırtmamalıdır;)
9ilsdx 9rvj 0lo

Yanıtlar:


288

Evet, Filekullanarak nesneyi alabilirsiniz File.toPath(). Bunun yalnızca Java 7+ için olduğunu unutmayın. Java 6 ve önceki sürümleri yoktur.


1
Java 6 veya daha düşük bir sürümde bunu başarmanın bir yolu var mı?
Karlovsky120

8
PathJava 7'de tanıtıldı, bu yüzden maalesef bunu Java 6 ve aşağısında yapmanın bir yolu yok.
Vivin Paliath

33

Gönderen belgeler :

Varsayılanla ilişkilendirilen yollar providergenellikle java.io.Filesınıfla birlikte çalışabilir . Diğer sağlayıcılar tarafından oluşturulan yolların, temsil ettiği soyut yol adlarıyla birlikte çalışma olasılığı düşüktür java.io.File. Yöntem, bir java.io.File nesne ile temsil edilen arka yol adı, bir yolu elde etmek üzere kullanılabilmektedir. Ortaya çıkan Yol, nesne ile aynı dosya üzerinde çalışmak için kullanılabilir . Buna ek olarak, yöntem, bir yapı yararlıdır gelen bir temsili .toPathjava.io.FiletoFileFileStringPath

(benimkini vurgula)

Yani, için toFile:

FileBu yolu temsil eden bir nesne döndürür .

Ve toPath:

java.nio.file.PathBu soyut yoldan oluşturulmuş bir nesneyi döndürür .


1
Tam tersini istiyor.
Vivin Paliath

Buna itiraz etmiyorum :). Sadece OP'nin ne istediğinden bahsediyordum.
Vivin Paliath


10

Birçoğunun önerdiği gibi, JRE v1.7 ve üstü File.toPath ();

File yourFile = ...;
Path yourPath = yourFile.toPath();

Yukarıdaki diğer yazılarda da bahsedilen Oracle'ın jdk 1.7 belgelerinde , aşağıdaki eşdeğer kod, JRE v1.6 için çalışabilecek toPath () yönteminin açıklamasında açıklanmıştır;

File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.