Java7 में स्ट्रिंग से पथ बनाएँ


280

मैं जावा 7 में किसी java.nio.file.Pathऑब्जेक्ट से ऑब्जेक्ट कैसे बना सकता हूं String?

अर्थात

String textPath = "c:/dir1/dir2/dir3";
Path path = ?;

?लापता कोड कहां उपयोग होता है textPath

जवाबों:


454

आप बस Pathsकक्षा का उपयोग कर सकते हैं :

Path path = Paths.get(textPath);

... यह मानते हुए कि आप निश्चित रूप से डिफ़ॉल्ट फ़ाइल सिस्टम का उपयोग करना चाहते हैं।


क्या इसके लिए सापेक्ष पथ और पूर्ण पथ के साथ काम करने का कोई तरीका है? जहां परियोजना या निर्वासन के सापेक्ष एक रास्ता दे रहा है?
shinzou 17

@ कुक्कू: मुझे लगता है कि आपको एक नया सवाल पूछना चाहिए कि आप क्या करने की कोशिश कर रहे हैं और आपने क्या किया है।
जॉन स्कीट

@JonSkeet क्या Path.get()प्लेटफॉर्म स्वतंत्र है? इसका मतलब है कि विंडोज में और लिनक्स में Path.get("lib","p2") जैसा होगाlib\p2lib/p2
कसुन सियामबलपिटिया

1
@KasunSiyambalapitiya: हाँ, यह उसी तरह ठीक होना चाहिए।
जॉन स्कीट

1
@JonSkeet Paths.get ("/ opt / path /"); इसकी वापसी "\ opt \ path \" के रूप में होती है। क्या आप कृपया समाधान प्रदान कर सकते हैं।
deadend

18

Javadocs से .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html

Path p1 = Paths.get("/tmp/foo"); 

के समान है

Path p4 = FileSystems.getDefault().getPath("/tmp/foo");

Path p3 = Paths.get(URI.create("file:///Users/joe/FileTest.java"));

Path p5 = Paths.get(System.getProperty("user.home"),"logs", "foo.log"); 

Windows में, फ़ाइल C: \ joe \ log \ foo.log बनाता है (उपयोगकर्ता के घर को C: \ joe मानकर)
Unix में, फ़ाइल /u/joe/logs/foo.log बनाता है (उपयोगकर्ता घर को / u / joe के रूप में मानता है)।


6
मैं File.separaratorवर्तमान ओएस की देखभाल करने के बजाय उपयोग करने का सुझाव देता हूं । जैसे "/tmp/foo"हैFile.separator+"tmp"+File.separator+"foo"
mat_boy

मुझे लगता है कि यह वास्तविक फ़ाइल नहीं बनाता है, लेकिन यह एक पथ ऑब्जेक्ट बनाता है। आप Files.createFile (logfilePath) का उपयोग करके डिस्क पर वास्तविक फ़ाइल बनाने के लिए पथ ऑब्जेक्ट का उपयोग कर सकते हैं।
Mr.Q

12

यदि संभव हो तो मैं Pathसीधे पथ तत्वों से निर्माण करने का सुझाव दूंगा:

Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"

क्या यह मंच स्वतंत्र है?
कसुन सियामबलपिटिया

7

यहां तक ​​कि जब सवाल जावा 7 के बारे में है, तो मुझे लगता है कि यह जानना महत्वपूर्ण है कि जावा 11 से, Pathकक्षा में एक स्थिर विधि है जो इसे सीधे करने की अनुमति देती है:

एक स्ट्रिंग में सभी पथ के साथ:

Path.of("/tmp/foo");

पथ के साथ कई तार टूट गए:

Path.of("/tmp","foo");


2
अंत में उन्होंने यह विधि प्रदान की!
Mat_boy

@mat_boy हाँ, लेकिन यह कोई बड़ी बात नहीं है, वास्तव में। यह विधि जावा 7 में पहले से मौजूद थी, सिवाय इसके कि इसे पहले कहा गया था Paths.get
DodgyCodeException
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.