So erhalten Sie ddd
aus dem Pfadnamen, in dem sich test.Java befindet.
File file = new File("C:/aaa/bbb/ccc/ddd/test.Java");
Verwenden Sie File
s getParentFile()
-Methode und String.lastIndexOf()
, um nur das unmittelbar übergeordnete Verzeichnis abzurufen.
Marks Kommentar ist eine bessere Lösung alslastIndexOf()
:
file.getParentFile().getName();
Diese Lösungen funktionieren nur, wenn die Datei über eine übergeordnete Datei verfügt (z. B. über einen der Dateikonstruktoren erstellt wurde, die eine übergeordnete File
verwenden). Wenn getParentFile()
null ist, müssen Sie lastIndexOf
verwenden oder etwas wie Apache Commons 'FileNameUtils.getFullPath()
verwenden:
FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
=> C:/aaa/bbb/ccc/ddd
Es gibt verschiedene Varianten, um das Präfix und das nachfolgende Trennzeichen beizubehalten. Sie können entweder dieselbe FilenameUtils
-Klasse verwenden, um den Namen aus dem Ergebnis zu ziehen, lastIndexOf
verwenden, usw.
File f = new File("C:/aaa/bbb/ccc/ddd/test.Java");
System.out.println(f.getParentFile().getName())
f.getParentFile()
kann null sein, also sollten Sie es überprüfen.
Verwenden Sie unten,
File file = new File("file/path");
String parentPath = file.getAbsoluteFile().getParent();
In Java 7 haben Sie die neuenpfade api . Die modernste und sauberste Lösung ist:
Paths.get("C:/aaa/bbb/ccc/ddd/test.Java").getParent().getFileName();
Ergebnis wäre:
C:/aaa/bbb/ccc/ddd
Wenn Sie nur String-Pfad haben und kein neues File-Objekt erstellen möchten, können Sie Folgendes verwenden:
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"
wenn Sie den Ordner "ddd" an einen anderen Pfad anhängen müssen
String currentFolder= "/" + currentPath.getName().toString();
In Groovy:
Es ist nicht erforderlich, eine File
-Instanz zu erstellen, um die Zeichenfolge in groovy zu analysieren. Es kann wie folgt gemacht werden:
String path = "C:/aaa/bbb/ccc/ddd/test.Java"
path.split('/')[-2] // this will return ddd
Der Split erstellt das Array [C:, aaa, bbb, ccc, ddd, test.Java]
und der Index -2
zeigt auf den Eintrag vor dem letzten, der in diesem Fall ddd
ist.
//get the parentfolder name
File file = new File( System.getProperty("user.dir") + "/.");
String parentPath = file.getParentFile().getName();
Ab Java 7 würde ich lieber Path verwenden. Sie müssen nur den Pfad eingeben in:
Path dddDirectoryPath = Paths.get("C:/aaa/bbb/ccc/ddd/test.Java");
und einige Get-Methode erstellen:
public String getLastDirectoryName(Path directoryPath) {
int nameCount = directoryPath.getNameCount();
return directoryPath.getName(nameCount - 1);
}