[英]Copying symbolic link for different OS's in java
是否可以在java中复制符号链接...基本上我想要的是只复制包含文件的符号链接,其中符号链接指向..
我没试过,但是我想在使用Files.copy时可以使用LinkOption.NOFOLLOW_LINKS(Java SE 7)
http://docs.oracle.com/javase/7/docs/api/java/nio/file/LinkOption.html
我得到了方式..首先我需要确定它是一个象征性的链接
Path file = ...;
boolean isSymbolicLink =
Files.isSymbolicLink(file);
然后我可以在目的地创建相同的符号链接
Path newLink = ...;
Path existingFile = ...;
try {
Files.createLink(newLink, existingFile);
} catch (IOException x) {
System.err.println(x);
} catch (UnsupportedOperationException x) {
// Some file systems do not
// support adding an existing
// file to a directory.
System.err.println(x);
}
当然你可以做到这一点。 从类Files中查看方法副本(路径源,路径目标,CopyOption ...选项)。 将LinkOption.NOFOLLOW_LINKS指定为复制选项将使复制方法执行您想要的操作。
这种行为在处理如下所示的链接时是通用的:
Path target = Paths.get("c://a.txt");
Path symbolicLink = Paths.get("c://links//symbolicLink.txt");
// creates test link
Files.createSymbolicLink(symbolicLink, target);
BasicFileAttributes targetAttributes = Files.readAttributes(symbolicLink, BasicFileAttributes.class);
BasicFileAttributes linkAttributes = Files.readAttributes(symbolicLink, BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS);
System.out.println("File attribute - isSymbolicLink\tTarget: " + targetAttributes.isSymbolicLink() + "\t\t\t\tLink: " + linkAttributes.isSymbolicLink());
System.out.println("File attribute - size\t\tTarget: " + targetAttributes.size() + "\t\t\t\tLink: " + linkAttributes.size());
System.out.println("File attribute - creationTime:\tTarget: " + targetAttributes.creationTime() + "\tLink: " + linkAttributes.creationTime());
这段代码输出:
File attribute - isSymbolicLink: Target: false Link: true
File attribute - size: Target: 8556 Link: 0
File attribute - creationTime: Target: 2013-12-08T16:43:19.55401Z Link: 2013-12-14T16:09:17.547538Z
您可以访问我的帖子,了解有关NIO.2中链接的更多信息
使用此页面中描述的框中的JRE中可用的符号链接的所有可能操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.