是否可以测试压缩档案的内容是否相同而无需解压缩?在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”是不同的。怎么样?
答案 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