textConnection等效于readBin

时间:2016-03-19 23:12:02

标签: r file-io binaryfiles

我正在为二进制格式解析器编写测试,其API接受Connection对象。我想将二进制数据的例子直接放到测试用例中,因为这些例子很短且很多。

如果是文本格式,我只想写:

test_that("readFoo parses message X", {
    data <- readFoo(textConnection("Bar"))
    expect_that(data$q, 1)
})

...但readFoo在内部使用readBin(…, 'raw'),这需要二进制连接,而textConnection则不需要。因此,

test_that("readFoo parses message X", {
    data <- readFoo(textConnection('\x01\x7a\x02\x2c\x7d\x0d\x5a\x0b\x0c\x01'))
    expect_that(data$q, 1)
})

失败了:

Error in readBin(conn, "raw", 10) : can only read from a binary connection

是否可以使这项工作?

1 个答案:

答案 0 :(得分:3)

您可能希望通过rawConnection()函数使用a "raw connection",该函数的行为与textConnection()基本相同。基础包文档中的交叉引用并不是很好,所以很容易错过这个。