java Java中的绝对相对文件路径

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2378169/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-29 20:51:41  来源:igfitidea点击:

Absolute to Relative File Path in Java

javarelative-pathabsolute-path

提问by Spoike

Given I have two Fileobjects I can think of the following implementation:

鉴于我有两个File对象,我可以想到以下实现:

public File convertToRelative(File home, File file) {
    final String homePath = home.getAbsolutePath();
    final String filePath = file.getAbsolutePath();

    // Only interested in converting file path that is a 
    // direct descendants of home path
    if (!filePath.beginsWith(homePath)) {
        return file;
    }

    return new File(filePath.substring(homePath.length()+1));
}

Is there some smarter way of converting an absolute file path to a relative file path?

是否有一些更智能的方法可以将绝对文件路径转换为相对文件路径?

Possible Duplicate:

How to construct a relative path in java from two absolute paths or urls

可能的重复:

java中如何从两个绝对路径或url构造相对路径

回答by Lombo

This question was asked before here

这个问题之前在这里问过

Here is the answer just in case

这是以防万一的答案

String path = "/var/data/stuff/xyz.dat";
String base = "/var/data";
String relative = new File(base).toURI().relativize(new File(path).toURI()).getPath();
// relative == "stuff/xyz.dat"