簡體   English   中英

在java中復制不同操作系統的符號鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM