2011-08-03 192 views
3

我有java.io.File對象A和B,其中A代表目錄,B代表文件。 B可以是絕對路徑或相對路徑,它比A低0或更多級別。確定B是否被A包含的最有效方法是什麼?確定目錄是否包含文件

例如,

A爲C:\用戶\紙幣\桌面\ ABC \ XYZ123且B爲C:\ Users \用戶鮑勃\文件\ INC \ data.inc

A爲C:\用戶\紙幣\桌面\ ABC \ XYZ123且B爲C:\ Users \用戶鮑勃\文件\ X1 \ Y1 \ INC \ data.inc

A爲C:\用戶\ bill \ Desktop \ abc \ xyz123和B是.. \ .. \ .. \ Documents \ inc \ data.in ç

+3

聞起來像作業... –

+7

來吧,夥計......這是正確的'文件'API - [''getParentFile()'](http://download.oracle.com/javase/6/docs /api/java/io/File.html#getParentFile())。 – mre

+1

當你被困時,請不要將這個網站想象成某個地方,而不是在開始之前。 – aevanko

回答

13

您可以檢查,看看是否A是B的做

A.equals(B.getParentFile()) 

編輯父:如果您要檢查如果B下方的一個或多個級別,只是不斷收到ParentFile,直到它的A或空

File C = B.getParentFile(); 

while(C != null) { 
    if(A.equals(C)) 
     return true; 

    C = C.getParentFile(); 
} 

return false; 
0

getParentFile(),其返回父目錄,getCanonicalFile()可以使用的。像這樣:

File bDir = b.getParentFile(); 
boolean same = bDir.equals(a) || bDir.getCanonicalFile().equals(a.getCanonicalFile()); 

路徑可能會非常棘手。如果幸運的話,只需要getParent()即可。使用getCanonicalFile()應該涵蓋更復雜的情況。

0

使用類文件實用程序:

public static boolean directoryContains(File directory, 
             File child) 
           throws IOException 

確定的父目錄是否包含子元素(文件或目錄)。

相關問題