二进制双通道技术实现文件分割(一)

原创 2004年09月10日 17:03:00
(一)编程原理:?


  文件分割实际上就是将目标文件用二进制读写的方法,精确的连续保存为合适大小的独立文件,一般来说,分割后的文件在正确组装前是不能被使用的。?


  文件还原是文件分割的逆过程,即是将分割后的文件严密的按照分割顺序用二进制读写的方法写入一个同一个文件的过程,只要程序算法和逻辑正确严密,分割前和分割后的文件是没有一个字节的差别的。?


  之所以使用双通道技术是因为当被分割的文件较大或者非常大(远远大于内存)时,使用单个文件通道定义的内存二进制缓冲数组非常容易造成内存的用尽而导致操作失败,另一方面,它的处理速度和可靠性也是非常令人担忧的。?


  编程思路是,首先使用双通道技术将目标文件分割成指定大小的文件,扩展名依次是“指定文件名+.源文件扩展名+.分割序号”,并且生成一个还原信息文件“被分割文件名.hj”,该文件将记录文件分割的有关信息;文件还原时,同样利用双通道,按照在还原信息文件中登记的信息,将待还原的文件写入同一个文件中。?


  (二)编程实践:?


  (1)启动vb6,建立一个标准exe工程,添加一个窗体form1,添加microsoft?common?dialog?control?6.0控件,命名为cod1;添加两个frame控件(frame1的caption=“文件分割”,frame2的caption=“文件还原”);添加五个标签框,caption属性依次为“被分割文件名”、“分割后文件大小”、“分割后文件保存在”、“单位:bytes字节”、“还原信息文件名”、“还原后文件保存在”;由上至下一次添加四个caption=“浏览...”的命令按钮command1、command2、command3、command4;由上至下依次添加5个textbox按钮txtFileName、txtFileLength、Txtoutname、txtTemplateName、txtOutputFile;添加两个命令按钮cmdsplit,caption=“开始分割”、cmdunsplit,caption=“开始还原”;两个命令按command5、command6用来指示操作执行进度。代码如下:?


  Option?Explicit?


  Private?Sub?cmdSplit_Click()?’文件分割?


  Dim?err_descr?As?String?’定义接收返回错误码的字符串变量?


  If?Not?SplitFile(txtFileName.Text,0,err_descr,CLng(txtFileLength.Text),Txtoutname.Text)?Then?


  MsgBox?"文件操作产生了错误——"?&?err_descr,vbExclamation?


  Else?


  MsgBox?"文件分割操作已经圆满完成!"?


  End?If?


  End?Sub?’当splitfile公用过程返回值=true表示操作成功,否则失败并返回错误简短的提示?


  Private?Sub?cmdUnsplit_Click()?’文件还原?


  Dim?err_descr?As?String?


  If?Not?ReassembleFile(txt?TemplateName.Text,False,txtOutputFile.Text)?Then?


  MsgBox?"文件操作产生了错误——"?&?err_descr,vbExclamation?


  Else?


  MsgBox?"文件还原操作已经圆满完成!"?


  End?If?


  End?Sub?’当ReassembleFile公用过程返回值=true表示操作成功,否则失败并返回错误简短的提示?


  Private?Sub?Command1_Click()?’选择被分割文件?


  CoD1.Filter="所有格式文件*.*|*.*"?


  CoD1.ShowOpen?


  If?CoD1.FileName<>""?Then?


  txtFileName.Text=CoD1.FileName?


  End?If?’如果未选中文件就退出过程?


  End?Sub?


  Private?Sub?Command2_Click()?’分割后文件保存路径名称?


  With?CoD1?


  If?txtFileName.Text=""?Then?


  MsgBox?"请首先选择一个被分割文件!"?


  Exit?Sub?


  End?If?’如果未选定被分割文件退出过程?


  .ShowSave?


  If?.FileName<>""?Then?


  Txtoutname.Text=.FileName?


  End?If?’如果未指定保存文件名退出?


  End?With?


  End?Sub?


  Private?Sub?Command3_Click()?’传回还原信息文件名?


  With?CoD1?


  .FileName=""?


  .Filter="还原信息文件*.hj|*.hj"?’只显示*.hj还原信息文件?


  .ShowOpen?


  If?.FileName<>""?Then?


  txtTemplateName.Text=.FileName?


  End?If?


  End?With?


  End?Sub?


  Private?Sub?Command4_Click()?’得到并计算还原后文件名、扩展名?


  Dim?g?


  With?CoD1?


  If?txtTemplateName.Text=""?Then?


  MsgBox?"请首先选择一个还原信息文件!"?


  Exit?Sub?’如果还原信息文件未被选中,则退出过程?


  End?If?


  .Filter=""?


  .FileName=""?’清空过期文件名和类型指针?


  .ShowSave?


  If?.FileName<>""?Then?


  g=InStr(1,txtTemplateName.Text,".")?’查找第一个“.”?


  txtOutputFile.Text=.FileName?&?Mid?


  (txtTemplateName.Text,g,4)?’返回文件的用户指定名称和原扩展名?


  End?If?


  End?With?


  End?Sub?


  Private?Sub?Form_Load()?


  Me.Left=(Screen.Width-Me.Width)/2?


  Me.Top=(Screen.Height-Me.Height)/2?’窗体居中?


  Me.Caption=App.Title?’初始化标题栏?


  End?Sub?’主程序结束?

Linux下二进制文件的分割与合并

博客分类: Linux/Unix日常管理   dd的作用是转换和拷贝文件,我们可以利用它来分割文件,相关的选项如下: if=filename:输入的文件名 of=finename:输出的...
  • zangcf
  • zangcf
  • 2013-03-19 13:59:28
  • 2721

二进制双通道技术实现文件分割(一)

(一)编程原理:?   文件分割实际上就是将目标文件用二进制读写的方法,精确的连续保存为合适大小的独立文件,一般来说,分割后的文件在正确组装前是不能被使用的。?  文件还原是文件分割的逆过程,即是将分...
  • boywang
  • boywang
  • 2004-09-10 17:03:00
  • 813

文本文件和二进制文件的区别

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。  ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式...
  • seu_xuxueqi
  • seu_xuxueqi
  • 2006-03-11 19:24:00
  • 31223

二进制双通道技术实现文件分割(二)

(2)添加一个模块Module1,其中包含各种算法具体实现过程,双击模块写入以下代码:?   Type?FileSection?  Bytes()?As?Byte?  End?Type?’定义实际内存...
  • boywang
  • boywang
  • 2004-09-10 17:04:00
  • 747

二进制文件切割与合并

#define _CRT_SECURE_NO_WARNINGS #include #include #define PATH "C:\\Users\\michael\\Desktop\\切割合并\...
  • michael019
  • michael019
  • 2015-08-04 11:35:24
  • 423

Web文件上传原理

采用WEB技术实现B/S(浏览器/服务器)结构的管理系统是办公自动化的发展趋势。基于WEB技术的管理系统,由于开发周期短;与用户平台无关;易于实现交互式应用;能对信息进行快速、高效的收集、处理和发布,...
  • SJian123
  • SJian123
  • 2014-07-03 11:35:21
  • 3374

文件上传原理实现

文件上传原理,文件上传原理实现,多文件上传思路
  • ybygjy
  • ybygjy
  • 2010-09-07 18:22:00
  • 22475

二进制文件拆分器,对几个二进制直接合并的文件进行拆分

  • 2010年07月29日 15:29
  • 347KB
  • 下载

加一条内存条组成双通道(实战)

先列一下自己的电脑配置+购买的 京东条内存条:自己不需要很高,按自己需求来。我收到的条条实物图:都准备好了就开始了:首先:1:2:用螺丝刀开始卸螺丝:建议自己把螺丝放进一个容器:要是丢了。。。看一下u...
  • qq_26816591
  • qq_26816591
  • 2016-06-26 07:32:38
  • 539

C++读写二进制文件

C++提供了以下类执行从文件输出字符或者输入字符到文件里: ofstream:写文件的Stream 类 ifstream:读取文件的Stream 类: fstream:读/写文件的Stream 类。...
  • laoxuan2011
  • laoxuan2011
  • 2016-07-23 11:40:05
  • 1485
收藏助手
不良信息举报
您举报文章:二进制双通道技术实现文件分割(一)
举报原因:
原因补充:

(最多只允许输入30个字)