Vala 中的文件 input/output(IOChannel 与 FileStream 与 IOStream)

file input/output in Vala (IOChannel vs FileStream vs IOStream)

我有几个 fd(从 Process.spawn_async_with_pipes 获得)要读取和写入。现在我看到有多种方法可以这样做:

这些 API 之间有什么区别,我应该使用哪一个?

IOChannel

  • Part of GLib
  • 对使用文件、管道和套接字的便携式支持

文件流

  • 不是 GLib/GIO 的一部分
  • 绑定到标准 C 库 (libc) fopen、fclose、fwrite 等

UnixInputStream / UnixOutputStream

  • Part of GIO(准确的说是gio-unix,据我所知是Unix)
  • 支持 InputStream 和 OutputStream 接口
  • 适合不同类型流的抽象
  • GIO
  • 中还有处理Windows文件句柄的Win32InputStream和Win32OutputStream

所以使用哪一个取决于几个因素:

  • 您需要非 Unix 支持吗?
  • 您想使用 GIO 抽象接口吗?
  • 您需要使用 FILE*
  • 您需要使用 Windows 文件句柄