Как мне получить каталог файла, используя объект File? - PullRequest
96 голосов
/ 07 сентября 2010

Рассмотрим код:

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

testfile - это файл, который может существовать или не существовать.Я хочу получить каталог c:\\temp\\java\\, используя объект File.Как мне это сделать?

Ответы [ 9 ]

152 голосов
/ 07 сентября 2010

В любом случае я бы ожидал, что file.getParent() (или file.getParentFile()) даст вам то, что вы хотите.

Дополнительно, если вы хотитечтобы узнать, существует ли оригинал File и является каталогом, тогда exists() и isDirectory() - это то, что вам нужно.

24 голосов
/ 07 сентября 2010

File.getParent () из документации Java

8 голосов
/ 07 сентября 2010

Файловый API File.getParent или File.getParentFile должен вернуть вам каталог файла.

Ваш код должен быть таким:

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

Вы можете дополнительно проверить, что ваш родительский файл является каталогом, используя File.isDirectory API

if(file.isDirectory()){
    System.out.println("file is directory ");
}
7 голосов
/ 21 апреля 2017

Если вы делаете что-то вроде этого:

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

parent будет нулевым.

Итак, чтобы получить каталог этого файла, вы можете сделать следующее:

parent = file.getAbsoluteFile().getParent();
4 голосов
/ 07 сентября 2010
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());
}
3 голосов
/ 03 марта 2015
File filePath=new File("your_file_path");
String dir="";
if (filePath.isDirectory())
{
    dir=filePath.getAbsolutePath();
}
else
{
    dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), "");
}
0 голосов
/ 17 сентября 2017
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

Это было бы моим решением

0 голосов
/ 13 апреля 2017

Я нашел это более полезным для получения абсолютного расположения файла.

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
0 голосов
/ 29 января 2016

Вы можете использовать это

 File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...