测试压缩档案是否包含相同的数据

时间:2015-12-09 21:53:45

标签: r compression

是否可以测试压缩档案的内容是否相同而无需解压缩?在R中执行此操作的标准方法是什么?我想要散列它们,比如md5或者其他东西,但这需要更多时间,是否有必要?我不关心档案创建的时间或类似的东西,只要文件的内容相同。

示例(在您的comp上创建一些测试文件。)

## Create some test files
dir.create("test1")
dir.create('test2')
writeLines(text="hi", con="test1/test1.txt")
writeLines(text="hi*2", con="test2/test2.txt")

## Make some compressed archives
tar("test.tar.gzip2", files="test1", compression="bzip2")  # should be same as test1.tar.gzip2
tar("test1.tar.gzip2", files="test1", compression="bzip2")
tar("test2.tar.gzip2", files="test2", compression="bzip2")

我希望能够测试“test.tar.gzip2”和“test1.tar.gzip2”是否相同,但“test2.tar.gzip2”是不同的。怎么样?

1 个答案:

答案 0 :(得分:1)

以下函数从文件中提取字节,然后进行比较:

 binRead <- function(fName){
  f_s <- file.info(fName)$size
  f <- file(fName,"rb")
  res <- readBin(f,"raw",f_s)
  close(f)
  return(res)
}

t0 <- binRead("test.tar.gzip2")
t1 <- binRead("test1.tar.gzip2")
t2 <- binRead("test2.tar.gzip2")
all(t0 == t1) #true
all(t0 == t2) #false