0

我有一个带有绝对路径的文件:/Users/ivan/test.txt

String absolutePath = file.getAbsolutePath();

但我需要完整路径:/Volumes/Macintosh HD/Users/ivan/test.txt(“/”是“Macintosh HD”的别名)。

我已经尝试过使用 getCanonicalPath 和 FileSystemView 但我总是得到相同的路径。

4

3 回答 3

1

查看Aliases.h文件。具体来说,您想查看函数FSIsAliasFile()和函数FSResolveAlias族,可能是FSResolveAlias()FSResolveAliasFile()

我自己没有尝试过,但它看起来应该能给你你所追求的东西。

于 2012-05-11T11:42:04.510 回答
0

我认为没有办法用纯 Java 获得这条路。Yiou 将不得不编写一个本地共享对象。

Maye Java-7 和文件系统有一些改进

于 2012-05-11T11:45:30.170 回答
0

最后我使用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);                     
        }                    
}
...      
于 2012-05-12T20:37:44.070 回答