भले ही empty Stringकार्यों का उपयोग करके वर्तमान निर्देशिका प्राप्त करने का मूल समाधान । लेकिन user.dirवर्तमान निर्देशिका के लिए और user.homeहोम निर्देशिका के लिए संपत्ति का उपयोग करने की सिफारिश की जाती है ।
Path currentPath = Paths.get(System.getProperty("user.dir"));
Path filePath = Paths.get(currentPath.toString(), "data", "foo.txt");
System.out.println(filePath.toString());
उत्पादन:
/Users/user/coding/data/foo.txt
जावा पथ वर्ग प्रलेखन से:
एक पथ को एक खाली पथ माना जाता है यदि इसमें केवल एक ही नाम तत्व होता है empty। empty path is equivalent to accessing the default directoryफ़ाइल सिस्टम का उपयोग करके किसी फ़ाइल तक पहुँचना ।
क्यों Paths.get("").toAbsolutePath()काम करता है
जब एक खाली स्ट्रिंग पास की जाती है Paths.get(""), तो लौटी हुई Pathवस्तु में खाली रास्ता होता है। लेकिन जब हम कॉल करते हैं Path.toAbsolutePath(), तो यह जांचता है कि क्या पथ की लंबाई शून्य से अधिक है, अन्यथा यह user.dirसिस्टम गुण का उपयोग करता है और वर्तमान पथ को वापस लौटाता है।
यहाँ यूनिक्स फ़ाइल सिस्टम कार्यान्वयन के लिए कोड है: UnixPath.toAbsolutePath ()
मूल Pathनिर्देशिका पथ को हल करने के बाद मूल रूप से आपको फिर से उदाहरण बनाने की आवश्यकता है ।
इसके अलावा, मैं File.separatorCharप्लेटफ़ॉर्म स्वतंत्र कोड के लिए उपयोग करने का सुझाव दूंगा।
Path currentRelativePath = Paths.get("");
Path currentDir = currentRelativePath.toAbsolutePath(); // <-- Get the Path and use resolve on it.
String filename = "data" + File.separatorChar + "foo.txt";
Path filepath = currentDir.resolve(filename);
// "data/foo.txt"
System.out.println(filepath);
आउटपुट:
/Users/user/coding/data/foo.txt
filepath.toString()