如何确定gz文件的大小或在R中原始读取它?

12 浏览
0 Comments

如何确定gz文件的大小或在R中原始读取它?

参考这个答案(https://stackoverflow.com/a/9069670/6817726)以读取整个文件,我需要确定一个gz文件的未压缩文件大小。\n它保存在gz文件的最后4个字节中,但我找不到如何在不使用r的情况下打开文件,否则r会将其包装成一个解压层,因此我无法访问原始的gz文件。我也没有找到提供这个信息的方法。

0
0 Comments

如何确定gz文件的大小或在R中读取原始文件?

问题的原因是希望确定gz文件的大小或在R中读取原始文件。解决方法是使用以下代码:

gz_size <- function(path) {
  path <- path.expand(path)
  f <- file(path, open="rb", raw=TRUE)
  seek(f, -4L, "end", "read")
  ret <- readBin(f, "integer", 1)
  close(f)
  return(ret)
}

这段代码定义了一个名为`gz_size`的函数,它接受一个路径作为参数,并返回gz文件的大小。

首先,我们使用`path.expand`函数将路径扩展为绝对路径。然后,我们使用`file`函数打开文件,参数`open="rb"`表示以二进制模式读取文件,`raw=TRUE`表示读取原始数据而不是字符数据。

接下来,我们使用`seek`函数将文件指针移动到文件末尾的倒数第4个字节处。这是因为gz文件的最后4个字节存储了未压缩文件的大小。

然后,我们使用`readBin`函数读取文件中的一个整数值,该整数值表示未压缩文件的大小。

最后,我们使用`close`函数关闭文件,并返回读取的未压缩文件大小。

通过使用这个函数,我们可以确定gz文件的大小或在R中读取原始文件。这对于处理gz文件非常有用。

0