উত্তর:
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অবস্থিত, কোন ক্ষেত্রে এটির অগ্রগতিযুক্ত অনুসন্ধান করার কোনও অর্থ নেই; ঠিক এটি হার্ড কোড।