जवाबों:
उपयोग File
की getParentFile()
विधि और String.lastIndexOf()
पुनः प्राप्त करने के सिर्फ तत्काल मूल निर्देशिका।
मार्क की टिप्पणी से बेहतर समाधान है lastIndexOf()
:
file.getParentFile().getName();
ये समाधान केवल तभी काम करते हैं जब फ़ाइल में पैरेंट फ़ाइल होती है (उदाहरण के लिए, पैरेंट लेने वाले फ़ाइल निर्माणकर्ताओं में से एक के माध्यम से बनाई गई File
)। जब getParentFile()
शून्य का उपयोग करने के लिए आपको सहारा लेना होगा lastIndexOf
, या अपाचे कॉमन्सFileNameUtils.getFullPath()
जैसे कुछ का उपयोग करना होगा : '
FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
=> C:/aaa/bbb/ccc/ddd
उपसर्ग और अनुगामी विभाजक को बनाए रखने / छोड़ने के लिए कई प्रकार हैं। आप या तो FilenameUtils
परिणाम, उपयोग lastIndexOf
, आदि से नाम हथियाने के लिए उसी वर्ग का उपयोग कर सकते हैं ।
lastIndexOf
, बस का उपयोग करें file.getParentFile().getName()
।
null
(यदि आपने File
सापेक्ष पथ के साथ उदाहरण बनाया है) - कोशिश करें file.getAbsoluteFile().getParentFile().getName()
।
File f = new File("C:/aaa/bbb/ccc/ddd/test.java");
System.out.println(f.getParentFile().getName())
f.getParentFile()
अशक्त हो सकता है, इसलिए आपको इसकी जांच करनी चाहिए।
नीचे का उपयोग करें,
File file = new File("file/path");
String parentPath = file.getAbsoluteFile().getParent();
यदि आपके पास बस स्ट्रिंग पथ है और नई फ़ाइल ऑब्जेक्ट नहीं बनाना चाहते हैं तो आप कुछ का उपयोग कर सकते हैं:
public static String getParentDirPath(String fileOrDirPath) {
boolean endsWithSlash = fileOrDirPath.endsWith(File.separator);
return fileOrDirPath.substring(0, fileOrDirPath.lastIndexOf(File.separatorChar,
endsWithSlash ? fileOrDirPath.length() - 2 : fileOrDirPath.length() - 1));
}
File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
File curentPath = new File(file.getParent());
//get current path "C:/aaa/bbb/ccc/ddd/"
String currentFolder= currentPath.getName().toString();
//get name of file to string "ddd"
यदि आपको किसी अन्य पथ उपयोग द्वारा फ़ोल्डर "डीडीडी" को जोड़ने की आवश्यकता है;
String currentFolder= "/" + currentPath.getName().toString();
जावा 7 से मैं पाथ का उपयोग करना पसंद करूंगा। आपको केवल पथ डालने की आवश्यकता है:
Path dddDirectoryPath = Paths.get("C:/aaa/bbb/ccc/ddd/test.java");
और कुछ विधि प्राप्त करें:
public String getLastDirectoryName(Path directoryPath) {
int nameCount = directoryPath.getNameCount();
return directoryPath.getName(nameCount - 1);
}
ग्रूवी में:
File
खांचे में स्ट्रिंग को पार्स करने के लिए एक उदाहरण बनाने की आवश्यकता नहीं है । इसे निम्नानुसार किया जा सकता है:
String path = "C:/aaa/bbb/ccc/ddd/test.java"
path.split('/')[-2] // this will return ddd
विभाजन बना देगा सरणी [C:, aaa, bbb, ccc, ddd, test.java]
और सूचकांक -2
पिछले एक से पहले प्रवेश करने के लिए इंगित करेगा, जो इस मामले में हैddd
//get the parentfolder name
File file = new File( System.getProperty("user.dir") + "/.");
String parentPath = file.getParentFile().getName();
test.java
संभवतः उस कंप्यूटर पर भी मौजूद नहीं होगा जहां प्रोग्राम चलाया जा रहा है। यह संकलित.class
फ़ाइल है जिसे चलाया जाता है। तो यह केवल तभी काम करेगा जब आप जानते हैं कि कहांddd
स्थित है, जिस स्थिति में इसे प्रोग्रामेटिक रूप से खोजने का कोई मतलब नहीं है; बस कठिन कोड यह।