gpt4 book ai didi

linux - 使用 Java NIO 2 的符号链接(symbolic link)级别太多 - Paths.get(workFolder, timestamp);

转载 作者:太空宇宙 更新时间:2023-11-04 11:11:10 27 4
gpt4 key购买 nike

我收到“太多级别的符号链接(symbolic link)”我正在使用 Java NIO2 :- 这是在 Unix 上运行的。任何想法都会有很大帮助。谢谢。

深入我正在调用的代码

Path currentFolder = Paths.get(currentFolder, date);

并且在流程中的某个时刻 - 我正在尝试按照以下方法获取当前文件夹..

public Path getNewFolder() {
return currentFolder.resolve("test").resolve("new");
//where "test" and "new" contains date in between the path. example currentFolder path: "/base/test/2014106/new"
}

但是我遇到了异常..

java.nio.file.FileSystemException: /base/test/2014106/new: Too many levels of symbolic links
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)
at sun.nio.fs.UnixException.asIOException(UnixException.java:111)
at sun.nio.fs.UnixDirectoryStream$UnixDirectoryIterator.readNextEntry(UnixDirectoryStream.java:171)
at sun.nio.fs.UnixDirectoryStream$UnixDirectoryIterator.hasNext(UnixDirectoryStream.java:201)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:198)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:69)
at java.nio.file.Files.walkFileTree(Files.java:2591)
at java.nio.file.Files.walkFileTree(Files.java:2624)

最佳答案

当您有符号链接(symbolic link)循环时,通常会发生这种情况。

例如,如果您执行 ln -s 。 here,则该目录将有一个子目录 here 指向其父目录。这意味着您可以永远递归到它:

$ pwd
/home/me

$ ls -ld here
lrwxrwxrwx 1 me users 1 Apr 16 16:18 here -> .

$ cd here

$ pwd
/home/me/here

$ cd here/here/here/here/here/here/here

$ pwd
/home/me/here/here/here/here/here/here/here/here

由于您的堆栈跟踪被截断了,因此很难准确判断您应该如何处理它。选项包括:

  • 删除链中的符号链接(symbolic link),使其不再循环
  • 在迭代时检测循环
  • 在一定深度停止递归

关于linux - 使用 Java NIO 2 的符号链接(symbolic link)级别太多 - Paths.get(workFolder, timestamp);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com