`
iwebcode
  • 浏览: 2072068 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

文件分割,合并

 
阅读更多

花了两个小时,写了一份文件分割合并的demo代码

只供学习研究用

用到了stl的 fstream, iostream, string

fstream对文件进行操作,iostream控制输入输出流,string对字符串进行操作

这里我只在开始的检查了文件是否打开的问题,在后面的代码中都没有检查,只是demo的原因,应该在每次打开文件的时候,都必须检查文件是否打开

以下为代码:

/********************************************************************
created:2005/08/18 14:02
created:18:8:2005 16:22
filename: e:/work/Me/TempTest/cstringTest/cstringTest/cstringTest.cpp
file path:e:/work/Me/TempTest/cstringTest/cstringTest
file base:cstringTest
file ext:cpp
author:赵开勇

purpose:分割文件,合并文件,现在是固定大小
如果大小有变化,size有变化,可以采用多次的访问的方式来处理文件
既是每一次只操作一小部分
*********************************************************************/


#include <string>
#include <iostream>
#include <fstream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
fstream pf,pf1;
string filename("E://D100.mpg"); // 这里限定了文件名,也是只是demo而已
string tempstr = "";
char number[10];

pf.open(filename.c_str(),ios::in|ios::binary);

if (!pf)
{
cout<< "err"<<endl;
}

int temp = pf.tellg();
pf.seekg(0, ios_base::end);
long flen = pf.tellg();
pf.seekg(temp);

cout << "file size is: " << flen <<" byte"<< endl;

static const long size = 1024000; // 这里限定了文件的分割大小,只是demo而已;

int n = flen / size + 1; // 文件要分为多少分,为了保证最有一个文件最小,故+1;
cout << "number of file is: "<< n <<endl;


//////////////////////////////////////////////////////////////////////////
// 先分n-1的文件
char *databuf = new char[size];

for(int i = 0; i < n-1 ; i++)
{
itoa(i, number, 10);
tempstr = filename + number;
pf1.open(tempstr.c_str(),ios::out|ios::binary);

pf.read(databuf, size*sizeof(char));
pf1.write(databuf, size*sizeof(char));
pf1.close();
cout << "file :" << tempstr <<endl;
}

delete [] databuf;

//////////////////////////////////////////////////////////////////////////
// 分最后一个文件,由于最后一个文件大小不定,所以单独列出来
long endlen = flen - size * (n-1);

itoa(n-1, number, 10);
tempstr = filename + number;
pf1.open(tempstr.c_str(),ios::out|ios::binary);

databuf = new char[endlen];

pf.read(databuf, endlen*sizeof(char));
pf1.write(databuf, endlen*sizeof(char));
pf1.close();
cout << "file :" << tempstr << endl;

pf.close();
delete[] databuf;

//////////////////////////////////////////////////////////////////////////
// 合并文件类似
tempstr = filename + "A"; //这里为了在同一个目录里面看效果,避免文件同名

pf1.open(tempstr.c_str(), ios::out|ios::binary|ios::app);

databuf = new char[size];

for(int i = 0; i < n-1; i++)
{
itoa(i, number, 10);
tempstr = filename + number;
pf.open(tempstr.c_str(), ios::in|ios::binary);

pf.read(databuf, size*sizeof(char));
pf1.write(databuf, size*sizeof(char));

pf.close();

cout << "file :" << tempstr <<endl;
}

delete [] databuf;

//////////////////////////////////////////////////////////////////////////
// 合并最后一个文件,由于文件大小不清楚,其实没有个文件都可以采用这样的方式
// 合并,都可以避免文件的大小不一的问题,这里假设了出了最后一个文件,其他文
// 件都是相同大小的

itoa(n-1, number, 10);
tempstr = filename + number;
pf.open(tempstr.c_str(), ios::in|ios::binary);

temp = pf.tellg();
pf.seekg(0, ios_base::end);
flen = pf.tellg();
pf.seekg(temp);

databuf = new char[flen];

pf.read(databuf, flen*sizeof(char));
pf1.write(databuf, flen*sizeof(char));

pf.close();
pf1.close();
delete [] databuf;
cout << "file :" << tempstr << endl;


tempstr = filename + "A";
cout << "file :" << tempstr << endl;
//////////////////////////////////////////////////////////////////////////
system("pause");

return 0;
}

分享到:
评论

相关推荐

    文件分割合并

    文件分割合并 V1.5为免费软件,主要是对文件进行分割和合并,并支持对大型文件的操作,界面清晰操作简单,并实时对相关信息进行显示,文件的分割和合并可多线程同时进行.主要功能如下: 1. 支持对任何格式的文件进行...

    文件分割合并器

    在这个项目中,我们关注的是一个名为“文件分割合并器”的工具,它是使用C#编程语言开发的。这个工具的主要功能是将大文件拆分为多个小文件,也可以将这些小文件重新合并为原始的大文件。通过运用FileStream类,...

    delphi文件分割合并

    在标题"delphi文件分割合并"中,我们可以理解为这是一个使用Delphi 2009编写的程序,其主要功能是将大文件拆分为多个小文件以便于管理或传输,同时也可以将这些小文件重新组合成原始的大文件。这涉及到文件I/O操作、...

    文件分割合并工具

    文件分割合并工具 文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具文件...

    文件分割合并器(可拖动版).rar

    文件分割合并器是一款实用工具,主要用于处理大体积的文件,将其分割成较小的部分以便于传输、存储或管理,之后还能将这些分割后的部分重新合并成原始文件。在现代的数字生活中,我们可能会遇到需要发送超大文件的...

    文件分割合并精灵(注意看软件使用说明)

    "文件分割合并精灵"是一款工具,它可以帮助用户轻松地完成这个任务。下面将详细介绍这个软件的工作原理、应用场景以及使用注意事项。 文件分割是指将一个大文件切割成多个小文件,以便于管理和传输。例如,如果有一...

    文件分割合并机

    "文件分割合并机"是一款专为处理大文件而设计的实用工具,它允许用户将大文件分割成更小的部分,以便于存储、传输或管理,同时也支持将这些分割后的文件重新合并成原始文件。在现代信息技术中,面对动辄GB级别的大...

    文件分割合并工具FFSJ

    FFSJ是一款专业的文件分割与合并工具,特别适合处理大文件,尤其在有限的存储空间或者需要分批传输大型数据文件的场景下显得尤为实用。它能够将一个大文件分割成多个固定大小的小文件,便于管理和存储,同时也支持将...

    文件分割合并(可以吧文件分割 )

    例如,"文件分割合并"可能就是这样一个工具,其包含的文件如"文件分割合并.exe"可能就是程序的执行文件,而其他带有“潨摡”、“潜橢”等字样的文件可能是程序的配置文件或帮助文档,用于指导用户如何使用该工具。...

    文件分割合并工具UltraFileSplitte

    《文件分割合并工具UltraFileSplitter的深度解析与应用指南》 在数字化时代,大文件的处理成为我们日常工作中常见的挑战。文件分割合并工具UltraFileSplitter,以其高效、便捷的特点,成为了处理大文件的理想选择。...

    C语言开发文件分割合并管理器

    本项目——"C语言开发文件分割合并管理器",正是基于这一需求而设计的。 文件分割器通常包含以下核心功能: 1. **文件分割**:程序首先读取原始大文件,然后按照用户指定的大小或数量将文件分割成若干个小文件。这...

    WIN10文件分割合并

    "WIN10文件分割合并"是一个针对这种情况的解决方案,它使得大文件能够被分割成更小的部分,方便管理和传输,之后再进行合并恢复原始文件。 文件分割器是一种工具,专门设计用于将大文件拆分为多个小文件。"大文本...

    文件分割合并器———文件分割合并好工具

    文件分割合并工具文件分割合并工具文件分割合并工具文件分割合并工具

    闪电文件分割合并工具

    闪电文件分割合并工具是一款高效、便捷的绿色软件,专为用户解决大文件处理问题而设计。它能够将大型文件轻松地分割成多个小文件,便于存储、传输或管理,同时也能将这些分割后的文件准确无误地合并回原始状态。这款...

    海鸥文件分割合并器

    【海鸥文件分割合并器】是一款实用的工具软件,专门设计用于处理大文件的分割与合并操作。在日常工作中,我们经常会遇到需要传输或存储的大文件,由于文件大小的限制,传统的邮件系统或其他云存储平台可能无法直接...

    PDF文件分割合并助手

    这就是"PDF文件分割合并助手"所扮演的角色。 PDF文件分割是指将一个大型的PDF文档拆分成若干个较小的部分,这通常是因为文件过大,不方便传输或阅读。例如,一份包含多章节的书籍PDF,我们可以按照章节将其分割,...

Global site tag (gtag.js) - Google Analytics