2011-08-03 76 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 

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