How to check if a given path is possible child of another path?

后端 未结 9 1009
不思量自难忘°
不思量自难忘° 2020-12-09 01:53

I am trying to find if given path is possible child of another path using java. Both path may not exist.

Say c:\\Program Files\\My Company\\test\\My App

9条回答
  •  一个人的身影
    2020-12-09 02:22

    You can also use java.nio.file.Path to do this much more easily. The java.nio.file.Path.startsWith method seems to handle all possible cases.

    Example:

    private static void isChild(Path child, String parentText) {
        Path parent = Paths.get(parentText).toAbsolutePath();
        System.out.println(parentText + " = " + child.startsWith(parent));
    }
    
    public static void main(String[] args) {
        Path child = Paths.get("/FolderA/FolderB/File").toAbsolutePath();
        isChild(child, "/FolderA/FolderB/File");
        isChild(child, "/FolderA/FolderB/F");
        isChild(child, "/FolderA/FolderB");
        isChild(child, "/FolderA/Folder");
        isChild(child, "/FolderA");
        isChild(child, "/Folder");
        isChild(child, "/");
        isChild(child, "");
    }
    

    outputs

    /FolderA/FolderB/File = true
    /FolderA/FolderB/F = false
    /FolderA/FolderB = true
    /FolderA/Folder = false
    /FolderA = true
    /Folder = false
    / = true
     = false
    

    If you need more reliability you can use "toRealPath" instead of "toAbsolutePath".

提交回复
热议问题