Yanıtlar:
Kullanım File
'ın getParentFile()
yöntem ve String.lastIndexOf()
almak için sadece acil ebeveyn dizini.
Mark'ın yorumu şunlardan daha iyi bir çözümdür lastIndexOf()
:
file.getParentFile().getName();
Bu çözümler yalnızca dosyanın bir üst dosyası varsa çalışır (örneğin, bir üst öğe alan dosya yapıcılarından biri aracılığıyla oluşturulur File
). getParentFile()
Boş olduğunda , Apache Commons 'lastIndexOf
gibi bir şeye başvurmanız veya kullanmanız gerekecek :FileNameUtils.getFullPath()
FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
=> C:/aaa/bbb/ccc/ddd
Öneki ve sondaki ayırıcıyı tutmanın / bırakmanın birkaç çeşidi vardır. FilenameUtils
Adı sonuçtan, kullanımdan lastIndexOf
vb. Almak için aynı sınıfı kullanabilirsiniz .
lastIndexOf
, sadece kullan file.getParentFile().getName()
.
null
( File
göreli yol ile örnek oluşturduysanız ) - deneyin file.getAbsoluteFile().getParentFile().getName()
.
File f = new File("C:/aaa/bbb/ccc/ddd/test.java");
System.out.println(f.getParentFile().getName())
f.getParentFile()
boş olabilir, bu yüzden kontrol etmelisiniz.
Aşağıda kullanın,
File file = new File("file/path");
String parentPath = file.getAbsoluteFile().getParent();
Yalnızca String yolunuz varsa ve yeni File nesnesi oluşturmak istemiyorsanız, aşağıdaki gibi bir şey kullanabilirsiniz:
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"
"ddd" klasörünü başka bir yolla eklemeniz gerekiyorsa;
String currentFolder= "/" + currentPath.getName().toString();
Java 7'den Path kullanmayı tercih ederim. Sadece şunlara yol açmanız gerekir:
Path dddDirectoryPath = Paths.get("C:/aaa/bbb/ccc/ddd/test.java");
ve bazı alma yöntemi oluşturun:
public String getLastDirectoryName(Path directoryPath) {
int nameCount = directoryPath.getNameCount();
return directoryPath.getName(nameCount - 1);
}
Groovy'de:
File
Dizeyi harika bir şekilde ayrıştırmak için bir örnek oluşturmaya gerek yoktur . Aşağıdaki şekilde yapılabilir:
String path = "C:/aaa/bbb/ccc/ddd/test.java"
path.split('/')[-2] // this will return ddd
Bölünme, diziyi yaratacak [C:, aaa, bbb, ccc, ddd, test.java]
ve dizin -2
, son olandan önceki girişi işaret edecek, bu durumdaddd
//get the parentfolder name
File file = new File( System.getProperty("user.dir") + "/.");
String parentPath = file.getParentFile().getName();
test.java
muhtemelen programın çalıştırıldığı bilgisayarda bile bulunmayacaktır..class
Çalıştırılan derlenmiş dosyadır. Bu nedenle, bu yalnızca nerede olduğunu bilirseniz işe yararddd
, bu durumda onu programatik olarak bulmanın bir anlamı yoktur; sadece zor kodlayın.