当前位置: 首页 > 面试题库 >

如何在Java 7中用nio替换File.listFiles(FileFilter filter)?

祝锐
2023-03-14
问题内容

我有一些用Java 6编写的文件I / 0遍历代码,试图将其移动为Java 7中的New I / O,但找不到这种东西的替代品。

File[] files = dir.listFiles(AudioFileFilter.getInstance());

也就是说,没有办法只过滤路径文件,并且它返回文件列表,因此如果我想限制在其调用的方法中使用File,那么我将不得不将每个文件转换为path(file.toPath)。

我确实看过FileVisitor,但这似乎不允许您控制如何遍历树,因此我认为它不会对我有用。

那么Java 7中的File for Path可以替代多少呢?


问题答案:

使用Files#newDirectoryStream和DirectoryStream.Filter

这是代码:

DirectoryStream<Path> stream = Files.newDirectoryStream(dir, new DirectoryStream.Filter<Path>() {

        @Override
        public boolean accept(Path entry) throws IOException 
        {
            return Files.isDirectory(entry);
        }
    });

for (Path entry: stream) {
      ...
}

顺便说一句,为简单起见,我在上面的代码中省略了异常处理。



 类似资料:
  • 问题内容: 我试图将字符串分成数组并替换为,但无法做到,我也尝试了String.replaceAll这样的东西。 我想提供一个通往JNI的路径,并且它只能以这种方式读取。 问题答案: 在这种情况下不要使用- 这是用正则表达式指定的,这意味着您需要更多的转义。这应该很好: 请注意,由于Java字符串文字中的原因,反斜杠加倍-因此此处涉及的 实际 字符串是“单反斜杠”和“双反斜杠”-而不是双倍和四倍。

  • 本文向大家介绍如何在MySQL中用SPACE替换“ +”(加号)?,包括了如何在MySQL中用SPACE替换“ +”(加号)?的使用技巧和注意事项,需要的朋友参考一下 要替换,请使用MySQL中的函数。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是用空格替换“ +”(加号)的查询- 让我们再次检查表记录- 这将产生以下

  • 问题内容: 如何在Java中用空字符串替换单引号’。我尝试了以下操作,但似乎没有用。 提前致谢。非常感谢您的帮助。(输出应为:Sids den) 谢谢你们的回应。我想我应该对我的问题更加清楚。基本上,我从表中获得特殊字符,并且从同一个表中我们必须用什么值替换那些特殊字符。这是代码片段: 因此,当数据中的evrf有特殊字符’时,我将面临nullpointer异常。请建议如何进行此操作? 问题答案:

  • 问题内容: 用于保存jqgrid状态。它使用列号保存jqgrid列状态。如果在服务器中更改了jqgrid colmodel,这将导致浏览器中的javascript错误。 免费的jqgrid是从今天的git master下载的。调整列大小或移动行后处于状态保存 改为 并在状态下以loadComplete代码还原 与 现在行 导致错误 如何解决此问题,以便在更改列定义时可以使用列状态? 方法定义为 问

  • 我正在编写一个密码学程序,将密文转换为明文。根据字母的频率,我手动将密码的所有字母破解为明文,并且没有模式,所以我需要编写一个包含26次的循环,将字符串中的每个字母转换为另一个字母。 我的第一次尝试是在java中使用replace语句,如下所示 问题是,例如,我输入这样的字符串,我的键将是这样的“用c替换a,用p替换b,用q替换c”。我想要的输出应该是,但我得到的输出是。这意味着我希望它是一次性的

  • 我希望输出保持xml元素数据中的空格不变,如下所示: