String fileName = "C:\\Users\\xxxxx\\Downloads\\InformeModificacionesUnificado28102021-09.txt";
// File file = new File(fileName);
// output = new BufferedWriter(new FileWriter(file));
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
map.forEach((caracterMal, caracterBien) -> {
stream.forEach(x -> {
String cadenaWena = "";
cadenaWena = x.replaceAll(caracterMal, caracterBien);
System.out.println(cadenaWena);
//output.write(cadenaWena);
});
});
} catch (IOException e) {
e.printStackTrace();
}
}
该流只能迭代一次。您正在为映射中的每个元素迭代它。
停止使用lambdas(通常,在流上直接使用.foreach
是糟糕的java代码;您将失去检查的异常、控制流和局部变量透明度,但没有任何收获),问题就消失了:
static void main(String[] args) throws IOException {
var path = Paths.get(fileName);
var lines = Files.readAllLines(path);
for (var e : map.entrySet()) {
for (String line : lines) {
String cadenaWena = line.replace(caracterMal, caracterBien);
System.out.println(cadenaWena);
}
}
}
这可以修复许多问题:
方法是 现在我试着像这样改成stream,但我不知道这种改是否正确: 如何避免出现例外,解决问题? 我应该以某种方式重构代码吗?
java-stream已被操作或关闭 与合作可以解决此问题。 所以我当前的代码如下: 相同的错误信息。
问题内容: 我正在尝试使用Stream API生成Order实例。我有一个创建订单的工厂函数,并且使用DoubleStream初始化订单金额。 如果我使用文字(1.0)初始化Order实例,则可以正常工作。当我使用doubleStream创建随机数量时,将引发异常。 问题答案: 答案在(重点是我的)的javadoc中: 流仅应操作一次(调用中间流或终端流操作) 。例如,这排除了“分叉”流,其中相同
下面是我的代码: 从下面的函数调用上面的函数: 我不知道为什么。
我想复制一个Java8流,这样我可以处理它两次。我可以