Comment obtenir ddd
à partir du nom du chemin où réside le test.Java.
File file = new File("C:/aaa/bbb/ccc/ddd/test.Java");
Utilisez les méthodes File
'S getParentFile()
et String.lastIndexOf()
pour extraire seulement le répertoire parent immédiat.
Le commentaire de Mark est une meilleure solution que lastIndexOf()
:
file.getParentFile().getName();
Ces solutions ne fonctionnent que si le fichier a un fichier parent (créé par l’intermédiaire d’un des constructeurs de fichiers utilisant une variable parent File
). Lorsque getParentFile()
est null, vous devrez utiliser lastIndexOf
ou utiliser quelque chose comme: Apache Commons 'FileNameUtils.getFullPath()
:
FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
=> C:/aaa/bbb/ccc/ddd
Il existe plusieurs variantes pour conserver/supprimer le préfixe et le séparateur final. Vous pouvez utiliser la même classe FilenameUtils
pour récupérer le nom du résultat, utilisez lastIndexOf
, etc.
File f = new File("C:/aaa/bbb/ccc/ddd/test.Java");
System.out.println(f.getParentFile().getName())
f.getParentFile()
peut être null, vous devriez donc le vérifier.
Utilisez ci-dessous,
File file = new File("file/path");
String parentPath = file.getAbsoluteFile().getParent();
En Java 7, vous avez le nouveau Paths api . La solution la plus moderne et la plus propre est:
Paths.get("C:/aaa/bbb/ccc/ddd/test.Java").getParent().getFileName();
Le résultat serait:
C:/aaa/bbb/ccc/ddd
Si vous avez juste le chemin de chaîne et ne voulez pas créer un nouvel objet File, vous pouvez utiliser quelque chose comme
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"
si vous devez ajouter le dossier "ddd" par un autre chemin, utilisez;
String currentFolder= "/" + currentPath.getName().toString();
Dans Groovy:
Il n'est pas nécessaire de créer une instance File
pour analyser la chaîne dans groovy. Cela peut être fait comme suit:
String path = "C:/aaa/bbb/ccc/ddd/test.Java"
path.split('/')[-2] // this will return ddd
La scission créera le tableau [C:, aaa, bbb, ccc, ddd, test.Java]
et l'index -2
pointera vers l'entrée avant la dernière, qui dans ce cas est ddd
//get the parentfolder name
File file = new File( System.getProperty("user.dir") + "/.");
String parentPath = file.getParentFile().getName();
De Java 7, je préférerais utiliser Path. Il vous suffit de mettre chemin dans:
Path dddDirectoryPath = Paths.get("C:/aaa/bbb/ccc/ddd/test.Java");
et créer une méthode get:
public String getLastDirectoryName(Path directoryPath) {
int nameCount = directoryPath.getNameCount();
return directoryPath.getName(nameCount - 1);
}