如何使用java获取文件到文件夹的相对路径

如何使用java获取文件到文件夹的相对路径,java,file-io,Java,File Io,可能重复: 使用java,是否有方法返回文件到给定文件夹的相对路径?在file.getPath()和String.split()之间,您应该都设置为执行此操作 Java中没有任何方法可以满足您的需要。也许有一个库在那里做这件事(我想不出任何现成的,而且ApacheCommonsIO似乎没有)。你可以用这个或类似的东西: // returns null if file isn't relative to folder public static String getRelativePath(F

可能重复:

使用java,是否有方法返回文件到给定文件夹的相对路径?

在file.getPath()和String.split()之间,您应该都设置为执行此操作


Java中没有任何方法可以满足您的需要。也许有一个库在那里做这件事(我想不出任何现成的,而且ApacheCommonsIO似乎没有)。你可以用这个或类似的东西:

// returns null if file isn't relative to folder
public static String getRelativePath(File file, File folder) {
    String filePath = file.getAbsolutePath();
    String folderPath = folder.getAbsolutePath();
    if (filePath.startsWith(folderPath)) {
        return filePath.substring(folderPath.length() + 1);
    } else {
        return null;
    }
}

这将假定该文件位于该文件夹中的某个位置。使用路径分隔符拆分路径将允许您遍历每个子文件夹并比较它们(就像在字符串数组中循环一样简单)@Aleadam:子文件夹已被处理。例如,如果文件是
/1/2/3/a.txt
,文件夹是
/1/2
,它将返回
3/a.txt
。是的,但是如果文件是/1/4/a.txt,它将返回/4/a.txt,这是错误的。@Aleadam:为我自己试一试。
getRelativePath(新文件(“/1/2/3/a.txt”)、新文件(/1/2”))
返回
3/a.txt
getRelativePath(新文件(“/1/4/a.txt”)、新文件(“/1/2”)
返回
null