Java 使用Files.newDirectoryStream时无限循环

Java 使用Files.newDirectoryStream时无限循环,java,nio2,Java,Nio2,我编写了一些测试,在一些虚拟目录中压缩文件: public void compressFileToZipTest() throws IOException{ try (DirectoryStream<Path> stream = Files.newDirectoryStream( Paths.get("src", "test", "resources", "dummy", "files"), new FilesFilter())){

我编写了一些测试,在一些虚拟目录中压缩文件:

public void compressFileToZipTest() throws IOException{

    try (DirectoryStream<Path> stream = Files.newDirectoryStream(
            Paths.get("src", "test", "resources", "dummy", "files"), new FilesFilter())){

        for (Path entry: stream) {
            Path dst = entry.getParent().resolve(entry.getFileName().toString() + ".zip");
            boolean succeed = FilesUtility.compressToZip(entry, dst);
            Assert.assertTrue("Failed to create destination file", succeed);
            try(ZipFile zipFile = new ZipFile(dst.toFile())){
                Assert.assertTrue("Failed to compress file size", Files.size(entry) > Files.size(dst));
            }
            dst.toFile().deleteOnExit();
        }
    }
}


private static final class FilesFilter implements DirectoryStream.Filter<Path>{
    @Override
    public boolean accept(Path entry) throws IOException {
        return !Files.isDirectory(entry);
    }
}
public void compressFileToZipTest()引发IOException{
try(DirectoryStream=Files.newDirectoryStream)(
get(“src”、“test”、“resources”、“dummy”、“files”)、new FilesFilter()){
for(路径条目:流){
路径dst=entry.getParent().resolve(entry.getFileName().toString()+“.zip”);
boolean success=FilesUtility.compressToZip(条目,dst);
Assert.assertTrue(“未能创建目标文件”,成功);
try(ZipFile-ZipFile=new-ZipFile(dst.toFile())){
Assert.assertTrue(“未能压缩文件大小”,Files.size(条目)>Files.size(dst));
}
dst.toFile().deleteOnExit();
}
}
}
私有静态最终类FileFilter实现DirectoryStream.Filter{
@凌驾
公共布尔接受(路径项)引发IOException{
return!Files.isDirectory(条目);
}
}
在我们的构建团队更改了底层NAS存储之前,测试一直运行良好,这导致了从目录流式传输并写入到目录的无限循环


如果有人能解释这个问题,我会很高兴(我假设它与paths迭代器实现有关)。

您是否有任何
链接
文件夹/文件,这可能是导致无限循环的原因。您解决了这个问题吗?我有同样的,没有。但作为一种解决方法,我更改了过滤器以排除zip文件扩展名。很明显,您在实际扫描的同一目录中创建的zip文件可能会出现在
目录流中,也可能不出现,这取决于文件顺序、更新可见性和缓冲状态,换句话说,取决于您无法控制的情况。您是否有任何
链接
文件夹/文件,这可能是导致无限循环的原因。您是否解决了该问题?我有同样的,没有。但作为一种解决方法,我更改了过滤器以排除zip文件扩展名。很明显,您在实际扫描的同一目录中创建的zip文件可能会出现在
目录流中,也可能不出现,这取决于文件顺序、更新可见性和缓冲状态,换句话说,取决于您无法控制的情况。您是否有任何
链接
文件夹/文件,这可能是导致无限循环的原因。您是否解决了该问题?我有同样的,没有。但作为一种解决方法,我更改了过滤器以排除zip文件扩展名。很明显,您在实际扫描的同一目录中创建的zip文件可能会出现在
目录流中,也可能不出现,这取决于文件顺序、更新可见性和缓冲状态,换句话说,取决于你无法控制的事情。