S'agit-il d'un fichier générique ou essayez-vous d'obtenir le répertoire parent de votre fichier source? Dans ce dernier cas, je ne suis pas sûr que vous compreniez la compilation Java. Au moment de l'exécution, test.javail n'existera probablement même pas sur l'ordinateur sur lequel le programme est exécuté. C'est le .classfichier compilé qui est exécuté. Donc, cela ne fonctionnera que si vous savez où dddse trouve, auquel cas il ne sert à rien de le trouver par programme; codez-le simplement en dur.
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 (par exemple, créé via l'un des constructeurs de fichiers prenant un parent File). Quand getParentFile()est null, vous devrez recourir à l'utilisation lastIndexOf, ou utiliser quelque chose comme Apache Commons 'FileNameUtils.getFullPath() :
Il existe plusieurs variantes pour conserver / supprimer le préfixe et le séparateur de fin. Vous pouvez soit utiliser la même FilenameUtilsclasse pour récupérer le nom du résultat, utiliser lastIndexOf, etc.
Cela lève ArrayOutOfBoundsException si vous êtes déjà à l'emplacement racine - "/" -
Jnmgr
2
File file =newFile("C:/aaa/bbb/ccc/ddd/test.java");File curentPath =newFile(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;
test.java
il n'existera probablement même pas sur l'ordinateur sur lequel le programme est exécuté. C'est le.class
fichier compilé qui est exécuté. Donc, cela ne fonctionnera que si vous savez oùddd
se trouve, auquel cas il ne sert à rien de le trouver par programme; codez-le simplement en dur.Réponses:
Utilisez
File
lagetParentFile()
méthode de etString.lastIndexOf()
pour récupérer uniquement le répertoire parent immédiat.Le commentaire de Mark est une meilleure solution que
lastIndexOf()
:Ces solutions ne fonctionnent que si le fichier a un fichier parent (par exemple, créé via l'un des constructeurs de fichiers prenant un parent
File
). QuandgetParentFile()
est null, vous devrez recourir à l'utilisationlastIndexOf
, ou utiliser quelque chose comme Apache Commons 'FileNameUtils.getFullPath()
:Il existe plusieurs variantes pour conserver / supprimer le préfixe et le séparateur de fin. Vous pouvez soit utiliser la même
FilenameUtils
classe pour récupérer le nom du résultat, utiliserlastIndexOf
, etc.la source
lastIndexOf
, utilisez simplementfile.getParentFile().getName()
.null
(si vous avez créé uneFile
instance avec un chemin relatif) - essayezfile.getAbsoluteFile().getParentFile().getName()
.f.getParentFile()
peut être nul, vous devriez donc le vérifier.la source
Utilisez ci-dessous,
la source
Dans Java 7, vous avez la nouvelle API Paths . La solution moderne et la plus propre est:
Le résultat serait:
la source
Si vous n'avez que le chemin String et que vous ne voulez pas créer un nouvel objet File, vous pouvez utiliser quelque chose comme:
la source
si vous devez ajouter le dossier "ddd" par un autre chemin, utilisez;
la source
De java 7, je préférerais utiliser Path. Il vous suffit de mettre le chemin dans:
et créez une méthode get:
la source
Dans Groovy:
Il n'est pas nécessaire de créer une
File
instance pour analyser la chaîne dans groovy. Cela peut être fait comme suit:Le fractionnement créera le tableau
[C:, aaa, bbb, ccc, ddd, test.java]
et l'index-2
pointera vers l'entrée avant le dernier, qui dans ce cas estddd
la source
la source