Comment obtenir le répertoire d'un fichier à l'aide de l'objet File?

110

Considérez le code:

File file = new File("c:\\temp\\java\\testfile");

testfileest un fichier, et il peut exister ou non. Je veux obtenir le répertoire en c:\\temp\\java\\utilisant l' Fileobjet. Comment dois-je procéder?

Koerr
la source

Réponses:

170

Dans les deux cas, je m'attendrais file.getParent()(ou file.getParentFile()) à vous donner ce que vous voulez.

En outre, si vous voulez savoir si l'original File ne exist et est un répertoire, exists()et isDirectory()êtes ce que vous êtes après.

Jon Skeet
la source
9
Utilisez file.getParent () avec précaution, car il peut renvoyer null dans certains cas.
geschema
La réponse de @geschema Ponaguynik ci-dessous traite de ceci
4myle
24

File.getParent () de la documentation Java

Joël
la source
Texte de remplissage
Caelum
14

Si vous faites quelque chose comme ça:

File file = new File("test.txt");
String parent = file.getParent();

parent sera nul.

Donc, pour obtenir le répertoire de ce fichier, vous pouvez faire ensuite:

parent = file.getAbsoluteFile().getParent();
Ponaguynik
la source
8

Le fichier API File.getParent ou File.getParentFile doit vous renvoyer le répertoire du fichier.

Votre code doit être comme:

    File file = new File("c:\\temp\\java\\testfile");
    if(!file.exists()){
        file = file.getParentFile();
    }

Vous pouvez également vérifier que votre fichier parent est un répertoire à l'aide de l' API File.isDirectory

if(file.isDirectory()){
    System.out.println("file is directory ");
}
YoK
la source
4
File directory = new File("Enter any 
                directory name or file name");
boolean isDirectory = directory.isDirectory();
if (isDirectory) {
  // It returns true if directory is a directory.
  System.out.println("the name you have entered 
         is a directory  : "  +    directory);  
  //It returns the absolutepath of a directory.
  System.out.println("the path is "  + 
              directory.getAbsolutePath());
} else {
  // It returns false if directory is a file.
  System.out.println("the name you have
   entered is a file  : " +   directory);
  //It returns the absolute path of a file.
  System.out.println("the path is "  +  
            file.getParent());
}
Jigar Joshi
la source
1
Vous ne répondez pas à la question, cela ne fonctionne pas pour un fichier.
toni07
codefichier final = nouveau fichier ("C: /dev/changeofseasons.mid"); System.out.println ("le fichier existe?" + File.exists ()); System.out.println ("répertoire du fichier:" + file.getAbsolutePath ()); Ok, désolé pour les indentations boiteuses, je ne pense pas qu'il soit possible de formater le code dans les commentaires. Pourtant, votre code ne fonctionne évidemment pas.
toni07
Merci, corrigé <! --->
Jigar Joshi
3
File filePath=new File("your_file_path");
String dir="";
if (filePath.isDirectory())
{
    dir=filePath.getAbsolutePath();
}
else
{
    dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), "");
}
Lovenish Goyal
la source
Des descriptions sont nécessaires.
Halvor Holsten Strand
1
Bienvenue dans Stack Overflow! En général, les réponses au code nécessitent une petite explication - voir cet article de méta Stackoverflow . Avec la réponse que vous avez publiée, vous devrez peut-être expliquer que vous essayez de donner un cas général et comment cela se rapporte au poste réel du PO. Plus sérieusement - vous voudrez peut-être réfléchir à la façon dont cela fonctionnerait your_file_path = "C:\\testfiles\\temp\\testfile";- je ne pense pas que cela donnerait ce que vous espérez.
J Richard Snape
Devrait être la bonne réponse. Cela montrera le chemin complet du fichier.
Magno C
0

Vous pouvez utiliser ceci

 File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());
Saurabh
la source
0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

Ce serait ma solution

nobes
la source
-1

J'ai trouvé cela plus utile pour obtenir l'emplacement absolu du fichier.

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
C.Ikongo
la source