Vala中的文件输入/输出(IOChannel vs FileStream vs IOStream)

时间:2016-07-01 10:46:54

标签: glib vala

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

  • 使用IOChannel.unix_new
  • 使用FileStream.fdopen
  • 使用UnixInputStreamUnixOutputStream

这些API之间有什么区别?我应该选择哪一个?

1 个答案:

答案 0 :(得分:3)

IOChannel

  • Part of GLib
  • 使用文件,管道和插座的便携式支持

的FileStream

  • 不属于GLib / GIO
  • 绑定到标准C库(libc)fopen,fclose,fwrite等。

UnixInputStream / UnixOutputStream

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

因此,它取决于使用的几个因素:

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