【发布时间】:2017-01-22 04:37:36
【问题描述】:
我已经为此苦苦思索了很长一段时间了,非常感谢一些帮助。
我有 2 个流,如果元素在另一个流中,我想要从一个流中排除它们。
我正在尝试编写一个程序来查找所有音频文件,然后将它们写入文件。您给它一个要检查的文件夹,它会找到该文件夹中的所有音频文件并将它们全部写入一个文件。那部分效果很好。如果你再次给它相同的文件夹,问题就会出现,我希望能够排除已经存在的音频文件。这是有问题的代码:
Stream<Path> s = Files.walk(folder.toPath()).filter(p -> isAudio(p));
然后是isAudio(Path p)方法:
try
{
if (Files.probeContentType(p).startsWith("audio"))
{
if (PS != null)
{
System.out.println("boo");
System.out.println(PS.noneMatch(t -> t.equals(p.toString())));
System.out.println("boo2");
}
return true;
}
}
catch (Exception e) {System.err.println(e); }
return false;
PS 是我的第二个流,它从文件中读取。我已经测试过了,它是正确的。我的问题是 noneMatch 的结果没有打印出来,并且“boo2”永远不会显示。它每次都会被跳过。它跳转到“return false”;每一次,我都完全失去了答案。请,我能得到任何帮助将不胜感激!
【问题讨论】:
-
这是什么 PS 东西,它在哪里声明?显然,无论 noneMatch 正在做什么,都是您问题的一部分。也许它正在阻止某些东西?也许它以某种奇怪的方式失败了?捕获 Throwable 而不是仅检查异常。如果有什么奇怪的事情发生,你会想知道的。下一步是连接调试器并进入 noneMatch 方法以了解它在做什么。
标签: java java-8 java-stream