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?

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.


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


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();

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 ");
}

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());
}

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(), "");
}

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());

0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

Ce serait ma solution


-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());
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.