我有几个以({1}}结尾的巨大(> 2GB)JSON文件。这是我的测试文件示例,它是2 GB JSON文件的最后25个字符:
test.json
,\n]
我需要删除 ":{"value":false}}}}}},
]
并从最后一行的最后三个字符添加回,\n
。整个文件分为三行:前端和端括号都在各自的行上,JSON数组的所有内容都在第二行。
我无法将整个流加载到内存中以执行以下操作:
]
因为文件太大了。我尝试了several approaches,包括Ruby&#39>:
string[0..-2]
和UNIX' s:
chomp!(",\n]")
这两个都没有改变我的JSON文件。我通过以下方式查看了最后25个字符:
sed
也做了:
tail -c 25 filename.json
验证新文件版本和旧文件版本的字节大小是否相同。
任何人都可以帮助我理解为什么这些方法都不起作用吗?
答案 0 :(得分:2)
如果你想要进行这样的外科手术,没有必要阅读整个文件。相反,你可以只覆盖文件中的最后几个字节:
file = 'huge.json'
IO.write(file, "\n]\n", File.stat(file).size - 5)
这里的关键是从末尾开始记录尽可能多的字节数,否则你需要修剪文件长度,尽管你可以在truncate
的情况下做到这一点。< / p>