如何使用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
。