【发布时间】:2013-04-13 20:51:04
【问题描述】:
我想把一个文件(文本或二进制文件)分片成一定大小(大约 250-500kB)的小块,将分片的顺序随机化,然后放到另一个临时分片文件中。
然后,非碎片化将获取碎片文件,提取碎片,将它们按顺序排列并让原始文件完好无损。
这对于简单的基于文本的 ASCII 文件来说非常容易,因为您可以使用 C 库函数(如 sscanf)来格式化/解析信息。一个文件的格式可以像
(#### <fragment #> <fragment> ...)
但是,我不确定如何处理二进制文件。
我知道一个简单的解决方案是对像 <.part1 .part2> 文件这样的片段使用单独的文件,但这会有点难看,并且不能很好地扩展到更大的文件。将其存储在一个文件中会更好。
非常感谢。
【问题讨论】:
-
听起来像是默默无闻的安全。无论如何,您可以继续将元数据存储为纯文本并像以前一样使用
sscanf。您应该查看fread(cplusplus.com/reference/cstdio/fread) 以直接处理二进制数据。 -
我想通了。我只是有点担心能够再次提取文件片段以按顺序形成整个文件。使用文本,您可以确保标签格式保持一致。对于二进制我不太确定。
-
需要添加每个chunk的大小:{#chunk ID, chunk size, data } ....
-
您必须澄清问题。通常二进制比文本更可靠。
-
你能分享一下你已经做了什么吗?
标签: c file parsing temporary-files