rip*_*234 6 java windows symlink java-7
我在Windows 64位上使用Oracle Java 7.
当我使用Files.createSymbolicLink创建符号链接时,我注意到这种行为:
符号链接的类型是固定的,永远不会更改,无论其目标是否有任何更改.
使用Windows的本机mklink命令,可以强制链接类型为"目录符号链接".是否可以使用本机Java API或某些库实现此目的?
一个琐碎和丑陋的方式是:
的fugly.
不幸的是,我在 Java API 中没有找到实现这一点的方法。
我检查了 Windows JRE 代码,看起来这个决定是基于文件属性本身:
try
{
WindowsFileAttributes windowsfileattributes = WindowsFileAttributes.get(windowspath2, false);
if(windowsfileattributes.isDirectory() || windowsfileattributes.isDirectoryLink())
i |= 1;
}
Run Code Online (Sandbox Code Playgroud)
这些属性本身源自本机代码,看起来没有办法影响它们。
显然,您还有其他选择,例如手动调用mklink甚至使用类似的方法操作返回的对象PowerMock(这显然不是用于此目的)。
另一个肮脏的选择是创建所有相关类的代理:Path、FileSystem和FileSystemProvider。
它的工作方式是返回PathaFileSystem返回 a FileSystemProvider- 您需要做的是修改FileSystemProvider.createSymbolicLink方法的行为方式。
该createSymbolicLink方法接收一个当前未使用的 varargs 参数 - 您可以向它传递一个参数,该参数将指示您的包装器需要覆盖创建符号链接的方式 - 就这样:)
写完所有这些之后 - 我唯一的问题是 - 为什么你需要这种行为?
| 归档时间: |
|
| 查看次数: |
2634 次 |
| 最近记录: |