获取实际文件,给定java6上的符号链接
我在远程机器上有一个目录,其中有指向实际文件的符号链接,我应该在给定符号链接的情况下读取实际文件 如果我能找到符号链接指向的实际获取实际文件,给定java6上的符号链接,java,io,filesystems,symlink,java-6,Java,Io,Filesystems,Symlink,Java 6,我在远程机器上有一个目录,其中有指向实际文件的符号链接,我应该在给定符号链接的情况下读取实际文件 如果我能找到符号链接指向的实际文件路径,我可以这样做 我知道,如果我们使用Java7,我们可以使用NIO2的类(即Path、Path和文件)来实现这一点,但我们无法升级到JDK7,原因有几个 同样的事情我在Java6中没有看到。同样的工作应该是什么?我已经试过了,但没用。我没有足够的声誉来评论,但我可以给出答案。奇怪 这个程序演示了getCanonicalPath(),它确实解析了符号链接 impo
文件路径
,我可以这样做
我知道,如果我们使用Java7,我们可以使用NIO2的类(即Path
、Path
和文件
)来实现这一点,但我们无法升级到JDK7,原因有几个
同样的事情我在Java6中没有看到。同样的工作应该是什么?我已经试过了,但没用。我没有足够的声誉来评论,但我可以给出答案。奇怪 这个程序演示了getCanonicalPath(),它确实解析了符号链接
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
File link = new File("testlink");
System.out.println(link.getCanonicalPath());
}
}
运行它会产生:
[jon@dragon ~]$ ls -l testlink
lrwxrwxrwx. 1 jon jon 9 Apr 15 13:31 testlink -> Test.java
[jon@dragon ~]$ java Test
/home/jon/Test.java
尝试在远程主机上执行
readlink-f thefile
;非零退出状态意味着链路没有有效的目标,否则将在标准输出上输出结果。但是,.getCanonicalFile()
不起作用吗?不,getCanonicalFile不起作用。它提供符号链接本身的位置。关于:readlink-f thefile您能详细说明一下吗?您到底不明白什么?readlink-f symLink只返回符号链接的规范路径,它指向自身而不是实际的文件位置。对不起,那应该是readlink-e