我想创建一个函数来执行以下操作:替换在其中间填充了潜在的“../”和“./”的任意字符串,以指向带有点的绝对文件名删除了无关的斜杠。例如:/data/data/org.hacktivity.datatemple /../../ data /./ org.hacktivity.datatemple /
private String validDirectory( String baseDirectory, String addOn ) {
if ( baseDirectory + addOn ISN'T A VALID DIRECTORY ) {
Toast(error);
return baseDirectory;
}
else {
// ex: /data/data/org.hacktivity.datatemple/../org.hacktivity.datatemple/ => /data/data/org.hacktivity.datatemple
return TRIMMED VERSION OF baseDirectory + addOn;
}
}
答案 0 :(得分:2)
您正在搜索canonicalPath
对象的File
。使用getCaconicalPath()
或getCanonocalFile()
消除相对路径元素:
File baseDir = new File(baseDirectory);
File addOnDir = new File(baseDir, addOn);
String canonicalPath = addOnDir.getCanonicalPath();
System.out.println(canonicalPath); // /data/data/org.hacktivity.datatemple