运行以下代码
目录foreach(fileutils.pwd())do f|
如果用结束语?(日志)
file.open(f)do文件|
如果file.size(f)>最大文件大小
使f
放入file.ctime
放置file.mtime
#压缩文件
Org= f
zlib::gzipwriter.open('arch_log.gz')do gz|
gz.mtime=文件.mtime(原始)
gz.orig_name=原始
gz.write io.binread(原始)
将“文件已存档”
结束
#删除文件
开始
文件.删除(f)
将“文件已删除”
救援异常=>E
放置“无法删除文件{f}”
放置“错误{e.message}”
放置“===请手动删除文件====”
结束
结束
结束
结束
结束
文件也相当重,超过1GB。任何帮助都将不胜感激。
最佳答案
如果您正在读取的文件大于1GB,那么您必须至少有那么多空闲内存,因为IO.binread
将消耗掉这些内存。
最好加载一个已知的量并循环输入,直到它完全读、读和写成块。
从文档中:
io.binread(名称,[长度[,偏移量])->string
————————————————————————————————————————————————————
打开文件,选择性地查找给定的偏移量,然后返回
长度字节(默认为文件的其余部分)。binread确保
文件在返回之前已关闭。打开模式为“rb:ascii-8bit”。
io.binread(“testfile”)=>“这是第一行,这是第二行,这是第三行,依此类推…\n”
io.binread(“测试文件”,20)“这是第1行”
io.binread(“测试文件”,20,10)“ne one\n这是行”