我有一个带有绝对路径的文件:/Users/ivan/test.txt
String absolutePath = file.getAbsolutePath();
但我需要完整路径:/Volumes/Macintosh HD/Users/ivan/test.txt(“/”是“Macintosh HD”的别名)。
我已经尝试过使用 getCanonicalPath 和 FileSystemView 但我总是得到相同的路径。
查看Aliases.h文件。具体来说,您想查看函数FSIsAliasFile()
和函数FSResolveAlias
族,可能是FSResolveAlias()
或FSResolveAliasFile()
。
我自己没有尝试过,但它看起来应该能给你你所追求的东西。
我认为没有办法用纯 Java 获得这条路。Yiou 将不得不编写一个本地共享对象。
Maye Java-7 和文件系统有一些改进
最后我使用Runtime做到了(我只需要卷文件夹中“/”别名的实名文件夹:
...
// ls -al command lists the files and the alias
proc = Runtime.getRuntime().exec("ls -al /Volumes");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
String line;
// match the name between the time and the arrow
Pattern myPatter = Pattern.compile("[0-9]+:[0-9]+ (.*?) -> " + "/");
Matcher matcher;
while ((line = stdInput.readLine()) != null) {
if (line.indexOf(" -> ") != -1){
// get the real volume name
matcher = myPatter.matcher(line);
if (matcher.find())
return matcher.group(1);
}
}
...