web-dev-qa-db-fra.com

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

Considérons le code:

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

testfile est un fichier et il peut ne pas exister. Je veux obtenir le répertoire c:\\temp\\Java\\ en utilisant l’objet File. Comment puis-je faire cela?

97
Koerr

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

De plus, si vous voulez savoir si le File original existe existe et est un répertoire, puis exists() et isDirectory() sont ce que vous recherchez.

154
Jon Skeet

File.getParent () de Java Documentation

24
Joel

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
Ponaguynik

L'API de fichier (File.getParent) ou File.getParentFile devrait vous retourner le répertoire du fichier.

Votre code devrait ê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 en utilisant File.isDirectory API

if(file.isDirectory()){
    System.out.println("file is directory ");
}
8
YoK
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());
}
4
Jigar Joshi
File filePath=new File("your_file_path");
String dir="";
if (filePath.isDirectory())
{
    dir=filePath.getAbsolutePath();
}
else
{
    dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), "");
}
3
Lovenish Goyal
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

Ce serait ma solution

0
nobes

Vous pouvez utiliser ceci

 File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());
0
Saurabh