如何使用 OutputStream 模拟虚拟文件对象以传递给 CSVWRITE?

How to emulate a virtual File object using an OutputStream for passing to CSVWRITE?

我有一个 OutputStream 想要写入一些数据。它实际上是一个CipherOutputStream。我想使用 CSVWRITE 将 H2 表导出到流中。

然而 CSVWRITE 只需要一个文件名(即 String)。所以我想模拟一个虚拟文件对象,它使用像 memoryFile://foo 这样的 URI 打开,它实际上写入 OutputStream,我可以将其作为 URI 传递给 CSVWRITE。可能吗?

不是纯粹的Java方式,不。

如果您使用的是 *NIX 系统,您可以创建命名管道并在其中写入输出。然后你可以有一个从管道读取、加密和写入具体文件的程序。

也可以使用 Writer

ResultSet rs = ...
Writer writer = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
val csv = new Csv();
int row = csv.write(writer, rs);