BCB里使用流Stream分割文件

原创 2002年03月25日 08:49:00

 

现在很多分割文件程序的源代码是用VC写的,同样将VC的代码转换成BCB也不是难事,但是BCB里封装了很多类,操作起来更方便和容易。

这是我使用BCB使用TMemoryStream和TFileStream来做的分割文件程序。关键代码也就十几句。

首先放一个OpenDialog和Button,Edit,在Button的单击事件里写入如下代码。

int   aim_size=0;
try
{
int Edit1_size=Edit1->Text.ToInt();
    aim_size=Edit1_size;
}
catch(...)
{return;}
int k_1024=1024*aim_size;
     if (!OpenDialog1->Execute())
          return;
     String file_name=OpenDialog1->FileName;

if(file_name=="")
Button2Click(Sender);
     if(!FileExists(file_name))  file://文件有效
     {ShowMessage("无效文件");
     return;}
     String file_path=ExtractFilePath(file_name);//文件路径
  //   String file_ext =ExtractFileExt(file_name); file://文件后缀
     String file_Na =ExtractFileName(file_name); file://文件名
 try
 {
 TMemoryStream* pms = new TMemoryStream();//原文件
 pms->LoadFromFile(file_name);
  pms->Seek(0, soFromBeginning);//定位头部
 int sizemem=(pms->Size)/k_1024;//n K

    if(sizemem>999)
      {
      ShowMessage("文件超过预定数量,无法分割/n请将分割后文件扩大");
          return;

      }

 String batfile="@echo off /r/ncopy /b ";  file://生成bat批处理文件的内容
String n_i="";
for(int i=0;i<sizemem;i++)
{
n_i=(String)i;
       n_i="00"+n_i;
       n_i=n_i.SubString(n_i.Length()-2,3);
       batfile=batfile+file_Na+"."+n_i+"+ ";

 TMemoryStream* pms_i = new TMemoryStream();//目标文件

 pms_i->CopyFrom(pms,k_1024);
 pms_i->SaveToFile(file_Na+"."+n_i);
 delete pms_i;
 }

       n_i=(String)sizemem;
       n_i="00"+n_i;
       n_i=n_i.SubString(n_i.Length()-2,3);

 TMemoryStream* pms_i = new TMemoryStream();//最后一个文件

 pms_i->CopyFrom(pms,pms->Size-sizemem*k_1024);
 pms_i->SaveToFile(file_path+file_Na+"."+n_i);
       batfile=batfile+file_Na+"."+n_i;
       batfile=batfile+" "+file_Na;

 delete pms_i;
 delete pms;
 try
 {
     TFileStream *Mybat;
    Mybat = new TFileStream(file_path+file_Na+".bat", fmCreate);
    char *bat=batfile.c_str();
    Mybat->WriteBuffer(bat,batfile.Length());
    delete Mybat;
  }
  catch(...)
  {}

 ShowMessage("文件分割成功");
  }
  catch(...)
  {ShowMessage("文件分割出现错误");
  }

file://代码中还生成了一个.bat文件用于合并,很简单吧。

使用流合并文件也很简单,有兴趣的话联系我,我也刚接触流类。

小兵:wyb45@sohu.com

 

用流的方式来操作hdfs上的文件

package cn.itcast.bigdata.hdfs; import java.io.FileInputStream; import java.io.FileOutputStream; im...
  • wt346326775
  • wt346326775
  • 2016年12月03日 17:22
  • 1248

BCB如何加载字符串资源文件(语言资源文件)?

如何在软件.exe中嵌入语言资源呢。常规的想法是, 将语言字符串放到一个文件中, 然后在程序中去读取。 然而这样做存在一个问题: 最后发布的.exe必须依赖于语言字符串文件, 比如lang.txt. ...
  • stpeace
  • stpeace
  • 2015年07月26日 12:45
  • 1563

Java中的stream流的概念解析

Java中的stream流的概念解析
  • zx48822821
  • zx48822821
  • 2017年04月06日 15:25
  • 811

WCF教程--使用流Stream进行文件的上传下载

在wpf项目中,区分客户端和服务端,需要2端进行数据同步和文件传输。 wcf 文件上传的例子网上很多,我也是借鉴别人的示例。wcf 文件下载的示例网上就很少了,不知道是不是因为两者的处理方式比较...
  • chaoyangzhixue
  • chaoyangzhixue
  • 2016年01月18日 14:24
  • 3242

Stream(流)的学习笔记

http://www.cnblogs.com/KevinSong/p/3794236.html  最近学习使用Node.js创建http proxy server,少不了要跟Stream打交...
  • wyqlxy
  • wyqlxy
  • 2014年06月18日 13:14
  • 1134

struts2通过stream流实现异步加载ajaxAcion

一、 写一个AjaxCheckAction异步加载类//定义一个InputStream类型的成员变量 //给该变量添加getter和setter方法 //执行业务操作,将响应数据赋值给该成员变量...
  • Amen_Wu
  • Amen_Wu
  • 2017年01月10日 21:07
  • 677

Java简述 Java Stream(流)的分类, 四大基本流的介绍

字节流继承于InputStream、OutputStream,字符流继承于Reader、Writer
  • HZ_LIZX
  • HZ_LIZX
  • 2017年02月14日 15:58
  • 789

Nodejs数据流(Stream)手册

在书上看到的补充阅读,为了以后方便以后复习干脆翻译了下来。翻译自Node数据流手册1、介绍本文介绍了使用 node.js streams 开发程序的基本方法。"We should have some ...
  • u014695532
  • u014695532
  • 2016年04月14日 12:56
  • 2645

[转]:BCB中的文件操作

毕设所需原文地址:[转]:BCB中的文件操作作者:Neil 转载自:
  • RCKLV
  • RCKLV
  • 2017年06月01日 18:21
  • 468

PHP文件读取归纳

预备函数: fopen():函数将创建与文件的连接。如果是从二进制文件读取以获得跨平台兼容性,则应当将 "r" 更改为 "rb" popen():打开进程文件指针 fsockopen():打...
  • fb408487792
  • fb408487792
  • 2015年04月07日 09:48
  • 1001
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BCB里使用流Stream分割文件
举报原因:
原因补充:

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