【发布时间】:2020-04-10 09:54:40
【问题描述】:
假设我想将MyItem 的流保存到一个文件中(例如在 JSON 中)。当文件达到一定的字节大小限制时,我想停止。
我想在 Haskell 中做...流对我来说不是问题,更重要的是如何在将每个项目放入此文件后获取文件大小信息...
【问题讨论】:
-
使用 hTell 有什么问题吗?还是来自同一个 System.IO 模块的
hFileSize? -
json 值可以分割并跨越多个文件吗?大小限制是硬限制,还是可以超过它以适应文件中的最后一个
MyItem? -
@jpmarinier,我不知道 Nicolas 那时需要什么,但一个问题是
hTell仅适用于可查找句柄(实际文件、块设备等)。如果需求发生变化并且“文件”有时最终成为管道(或某种其他类型的句柄),那么所有代码都需要重写。 -
@dfeuer - 真的,当时我没有考虑过这种可能性,因为 Nicolas 提到了一个文件。在 Linux 系统上,如果由于某些(实现)原因流没有保持适当的偏移量,则底层的
lseek系统调用可能会返回ESPIPE。在这种情况下,我会说最不坏的选择可能是让程序逻辑进行计数,可能使用一些围绕 OS 级别文件句柄的对象包装器。
标签: haskell haskell-pipes streamly