文件的合并与分割
来源:互联网 发布:spark和java的关系 编辑:程序博客网 时间:2024/05/16 19:07
文件的合并与分割其实比较简单,分割时将一个大文件按二进制方式读取,然后按二进制写成一个个小文件。
合并时就把小文件顺次读取,再写入一个大文件。
下面是一个简单的例子:
//文件分割, 二进制读取
void CMyupdateDlg::OnBinary()
{
UINT nNewSize = 500000; //分成每个文件为512k
UINT nPerSize = nNewSize/10; //每次读取大小
CFile filesrc;
CFile filedst;
filesrc.Open("c://sx//mfc.bmp", CFile::modeRead | CFile::shareDenyNone | CFile::typeBinary);
DWORD dwSize = filesrc.GetLength();
if(dwSize<=nNewSize)
{
AfxMessageBox("文件小于512K, 不用分割!");
}
BYTE buf[140000]; //缓冲区
DWORD dwRead = 0;
UINT nIndex = 1;
do
{
CString name;
name.Format("C://sx//mfc%d", nIndex);
filedst.Open(name, CFile::modeWrite | CFile::shareExclusive | CFile::typeBinary | CFile::modeCreate);
do
{
dwRead = filesrc.Read(buf, nPerSize);
filedst.Write(buf, dwRead);
}
while(dwRead>0 && filedst.GetLength()<nNewSize);
filedst.Close();
nIndex++;
}
while(dwRead>0);
filesrc.Close();
}
//文件合并
void CMyupdateDlg::OnBinary2()
{
UINT nNewSize = 500000; //分成每个文件为512k
UINT nPerSize = nNewSize/10; //每次读取大小
CFile filesrc;
CFile filedst;
filedst.Open("c://sx//mfc2.bmp", CFile::modeWrite | CFile::shareExclusive | CFile::typeBinary | CFile::modeCreate);
BYTE buf[140000]; //缓冲区
DWORD dwRead = 0;
int i;
for(i=1;i<=4;i++)
{
CString name;
name.Format("C://sx//mfc%d", i);
filesrc.Open(name, CFile::modeRead | CFile::shareDenyNone | CFile::typeBinary);
do
{
dwRead = filesrc.Read(buf, nPerSize);
filedst.Write(buf, dwRead);
}
while(dwRead>0);
filesrc.Close();
}
filedst.Close();
}
只是在读取时注意一个问题,因为分割的文件是固定大小的,只会有最一个文件才可能小于这个固定值。
为保证分割的各文件大小固定。在每次读取时,要为这个目标小文件大小的倍数,否则可能造成文件大小不为设定的值。
即UINT nPerSize = nNewSize/10; //每次读取大小
其中dwRead = filesrc.Read(buf, nPerSize);
dwRead为读取的文件大小,并不一定等于nPerSize, 因为最后一次读取可能dwRead<nPersize 当dwRead<0时,表示文件读取结束
- 文件的合并与分割
- 文件的合并与分割
- 文件的分割与合并
- 文件的分割与合并
- 文件的分割与合并
- 文件的分割与合并
- 文件的分割与合并
- 文件分割与合并
- 电影文件的合并与分割
- 如何实现文件的分割与合并?
- Java_文件的分割与合并
- C#文件的分割与合并
- 文件的分割与合并SequenceInputStream
- java实现文件的分割与合并
- php 文件的分割与合并
- 文件的分割(split)与合并(cat)
- 合并分割的文件
- 分割文件与合并文件
- editgrid的combox列选定值的显示
- 鼠标移动上后变成手型
- Extjs更换皮肤
- 文章,记录按内容分页显示,根据文章内容按字数进行分页
- 前台调用后台事件的方法
- 文件的合并与分割
- 绑定数据截取固定的字符长度
- Linux nfs服务器文本配置方法
- 写在冬日的第一天--一个女程序员第六年工作总结
- How to Backup Partition of Range Partitioned Table with Local Indexes
- mapreduce 中文版 中文翻译
- 关于获取文件管理员操作权限的函数
- document.getElementsByName('paging.currentPage')[0].value = 'your value';
- WBS在项目控制中的应用