gpt4 book ai didi

java - 向 Java 流添加回调函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:03 26 4
gpt4 key购买 nike

假设我要执行以下操作:

  • 列出给定目录中的文件(作为流)
  • 将每个文件(路径)映射到一个 Reader(例如 BufferedReader)以供消费者使用。
  • 一旦文件被使用,删除文件

代码看起来有点像这样:

Stream<Reader> stream = Files.list(Paths.get("myFolder")) // Returns a stream of Path
.callback(Files::delete) // This would have to be called after the reader has been consumed
.map(Files::newBufferedReader); // Maps every path into a Reader

如果我使用 peek() 删除文件,那么当需要映射到 Reader 时文件将不存在,所以我需要在流之后运行的东西被消耗掉。有什么想法吗?

最佳答案

您可以使用 DELETE_ON_CLOSE选项:

Stream<Reader> stream = Files.list(Paths.get("myFolder"))
// TODO handle IOException
.map(path -> Files.newInputStream(path, StandardOpenOption.DELETE_ON_CLOSE))
.map(InputStreamReader::new)
.map(BufferedReader::new);

关于java - 向 Java 流添加回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54469098/

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