所谓文件分割就是指把一个较大的文件,分割成多个较小的文,在一次上传或下载该大文件下载不完的情况下,就可以分次上传或下载这些分割后的小文件,winrar压缩工具中就有实现文件分割的功能。

以个人的理解,一般的分割,其实就是把文件的二进制码,分成数份分别存储,然后在实际要用时,再按照分割后小文件的前后顺序,组合回原文件,这些操作并不复杂,只要把小文件的位置准确放回,不要把位置弄错,就应该不会出什么问题。

一个小程序,实现文件分割,然后将它们合并,基本上可以认为没有什么难度(和上几篇hook的程序比起来),明白原理就行了。
分割的目标文件依然是calc.exe(计算器程序)

文件分割技术浅析-编程知识网

上面的代码就是设置分割后的子文件以及子文件的大小,一共把文件分成了10份,每份大小为原大小十分之一,而最后一个子文件大小为 nFilesize - nFilesonsize[0] * 9,它是做收尾工作,所以特别对待。

文件分割技术浅析-编程知识网

这个就是循环即是实现根据子文件的大小进行二进制码写入,如果对文件打开为什么要分为字符模式以及二进制模式的设置还不怎么清楚的朋友看到这里应该可以有所收获了吧,b 的意义就是当想要这样打开一个程序文件时,体现读写流的形式是二进制,从而可以直接对这些非文档文件进行操作。

图中的一个循环写入已经完成了一切的分割,我也没有必要多解释了。而重新合并也和分割操作差不多,找到所有的分给后子文件,将其按照分割的顺序写成分割前的文件。

文件分割技术浅析-编程知识网

还是循环写入,方向只不过变为由子文件到原文件。结果测试:

文件分割技术浅析-编程知识网

运行第一个程序进行分割。

文件分割技术浅析-编程知识网

这些就是分割后的子文件,当运行第二个程序时就会合并如初。

文件分割技术浅析-编程知识网

计算器正常运行。