gpt4 book ai didi

java - 未知异常? java.nio.file.FileSystemException : Invalid exchange

转载 作者:行者123 更新时间:2023-12-01 06:04:33 28 4
gpt4 key购买 nike

我遇到了以前从未见过的错误,并且找不到任何相关信息。

如果我尝试遍历一个(几个嵌套子目录中的大型文件/100 万个文件。每个目录只有 1-300 个文件/文件夹)文件路径,我会得到以下堆栈跟踪

Exception in thread "main" java.io.UncheckedIOException: java.nio.file.FileSystemException: /PATH_HERE/: Invalid exchange
at java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.java:88)
at java.nio.file.FileTreeIterator.hasNext(FileTreeIterator.java:104)
at java.util.Iterator.forEachRemaining(Iterator.java:115)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at my.class.NGram.run(NGram.java:90)
at my.class.NGram.main(NGram.java:81)
Caused by: java.nio.file.FileSystemException: /PATH_HERE: Invalid exchange
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.next(FileTreeWalker.java:348)
at java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.java:84)
... 10 more

第 90 行的代码如下所示

ConcurrentLinkedQueue<File> queuOfAllFiles = new ConcurrentLinkedQueue<>();
FileVisitor<? super Path> fileVisitor = new SimpleFileVisitor<Path>()
{
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException
{
if (attrs != null && file != null && attrs.isRegularFile())
queuOfAllFiles.add(file.toFile());
return super.visitFile(file, attrs);
}

};
Files.walkFileTree(dir.toPath(), EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, fileVisitor); //This line errors

原始代码如下所示,会产生相同的错误

List<File> allFiles = Files.walk(dir.toPath(), FileVisitOption.FOLLOW_LINKS)
.filter(p -> !Files.isReadable(p))
.map(p -> p.toFile())
.collect(Collectors.toList());

我似乎无法在任何地方找到有关此错误的任何信息,或者可能导致该错误的原因。触摸/查看系统上所有文件的工具似乎运行没有问题,例如

find /PATH_HERE -type f | wc -l

给我正确的文件数量(大约 100 万个)

它在具有 40 TB SSD 存储、64 个 CPU 核心和 2 TB RAM 且运行 Ubuntu 16.04 的系统上运行。 Java 版本信息如下。

java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

我正在寻找任何可能导致此问题或其他问题的帮助。我现在没有任何想法,也找不到任何信息。

最佳答案

您必须遵循符号链接(symbolic link)吗?可能是一个潜在的麻烦点。另外,您是否尝试过使用自己的递归函数遍历树?您也许能够找到特定的有问题的文件/目录。

关于java - 未知异常? java.nio.file.FileSystemException : Invalid exchange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47601925/

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