2010-09-07 63 views

回答

126

無論哪種情況,我都希望file.getParent()(或file.getParentFile())能夠給你想要的東西。

此外,如果你想找出原File是否確實存在一個目錄,然後exists()isDirectory()是你追求的。

+7

使用file.getParent()小心,因爲它可能會返回在某些情況下空。 – geschema 2014-07-22 09:02:44

+0

@geschema Ponaguynik的回答如下: – 4myle 2017-06-13 19:27:05

21

File.getParent()從Java文檔

+0

It 404s *填充文本* – Caelum 2015-08-15 20:17:23

+0

https://docs.oracle.com/javase/8/docs/api/java/io/File.html#getParent-- – 2016-03-02 11:14:32

7

文件API File.getParentFile.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 "); 
} 
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

您不回答這個問題,這對文件不起作用。 – toni07 2015-04-06 21:17:29

+0

讓我看看可重複的例子@toni – 2015-04-06 21:30:41

+0

'code' final File file = new File(「C:/dev/changeofseasons.mid」); System.out.println(「file exists?」+ file.exists()); System.out.println(「file of directory:」+ file.getAbsolutePath()); 好吧,對不起,縮進縮進,我不認爲有可能在評論中格式化代碼。不過,你的代碼顯然不起作用。 – toni07 2015-04-06 21:41:22

2
File filePath=new File("your_file_path"); 
String dir=""; 
if (filePath.isDirectory()) 
{ 
    dir=filePath.getAbsolutePath(); 
} 
else 
{ 
    dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), ""); 
} 
+0

描述是必要的。 – 2015-03-03 11:08:01

+1

歡迎來到Stack Overflow!一般來說,代碼的答案需要一點解釋 - 看到這個元[Stackoverflow post](http://meta.stackoverflow.com/a/260413/838992)。有了你發佈的答案,你可能需要解釋你正在試圖給出一個一般情況,以及它如何與OP的實際職位相關聯。更嚴重的是,你可能想考慮它對'your_file_path =「C:\\ testfiles \\ temp \\ testfile」是如何工作的;' - 我不認爲它會給你所希望的。 – 2015-03-03 12:54:18

+0

應該是正確答案。這將顯示文件的完整路徑。 – 2015-07-06 14:11:20

0

您可以使用此目錄

File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath()); 
-1

我發現這對獲取絕對文件位置更有用。

File file = new File("\\TestHello\\test.txt"); 
System.out.println(file.getAbsoluteFile()); 
2

如果你做這樣的事情:

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

parent將是無效的。

因此,要獲得該文件的目錄,你接下來可以做的:

parent = file.getAbsoluteFile().getParent(); 
0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

這將是我的解決方案

相關問題