我正在对文件夹树中的不同类型的文件进行递归搜索。在搜索过程中找到.csv
文件后,我用BufferedReader
扫描了文件并将结果放入数据库中以进行进一步的操作。
在.nio.
程序包实用工具未遵循指向实际.csv
文件的链接时,应用程序可以完美地运行到软链接或硬链接。
规范路径和绝对路径完全相等。甚至资源管理器中的文件属性也会显示“链接”,而在Java中搜索属性也会产生“非符号链接”结果。
使用
初始化主目录File rootdir = new File ("..").getCanonicalFile();
没有效果。使用
.toRealPath()
除了将符号链接文件视为实际文件而不是链接之外,没有任何作用,但是当涉及到BufferedReader
时,我得到了NullPointerException。
我正在Windows 7上进行开发,但是目标环境是Linux,CentOS上运行的JBoss 7 AppServer。
唯一的解决方法-确实获得了指向链接目标的.csv
文件的实际路径是:
String s = arr[index].getCanonicalPath();
ShellFolder folder = ShellFolder.getShellFolder(new File(s));
System.out.println("FOUND A LINK? " + folder.getFolderType()); //LINK
if (folder.isLink()) {
fileToUse = folder.getLinkLocation(); // yaaay working!!!
}
这不是一个合适的解决方案,因为目标环境是在Linux发行版而非Windows下运行的服务器。该测试确实在本地Windows计算机上工作。虽然是相同的文件系统。
有人知道如何解决该问题吗?
这是Windows资源管理器视图(很抱歉,它是德语)。您可以看到已创建的软链接(如果我通过
创建为硬链接ln source.csv target.csv
这是相同的行为。