博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 Delphi 中流的使用(9) 分割与合并文件的函数
阅读量:6848 次
发布时间:2019-06-26

本文共 1893 字,大约阅读时间需要 6 分钟。

  hot3.png

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    Button1: TButton;    Button2: TButton;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}//分割文件的函数{参数 1 是要分割的文件名; 参数 2 是要风格文件的大小, 单位是 KB}{分割后的文件名扩展名用序号替换}function SplitFile(const FileName: string; Size: Cardinal): Boolean;var  fStream: TFileStream;    {原始文件}  toStream: TMemoryStream; {分文件}  p,i: Integer;            {p 记录当前指针位置; i 记录这是第几个分的文件}begin  Result := False;  Size := Size * 1024;     {把大小的单位转换为字节}  fStream := TFileStream.Create(FileName, fmOpenRead);  p := 0;  i := 0;  toStream := TMemoryStream.Create;  while p < fStream.Size do  begin    toStream.Clear;        {清空上次数据}    fStream.Position := p; {放好指针位置}    if fStream.Size-p < Size then Size := fStream.Size-p; {最后一个时, 有多少算多少}    toStream.CopyFrom(fStream, Size); {复制}    toStream.SaveToFile(FileName + '.' + IntToStr(i));        {保存}    Inc(i);    p := p + Size;  end;  fStream.Free;  toStream.Free;  Result := True;end;//合并文件, 参数是其中一个分文件名function MergeFile(const FileName: string): Boolean;var  ms: TMemoryStream; {读取分文件}  fs: TFileStream;   {合并后的文件}  path: string;  i: Integer;begin  path := ChangeFileExt(FileName,''); {去掉序号扩展名}  ShowMessage(path);  i := 0;  ms := TMemoryStream.Create;  fs := TFileStream.Create(path, fmCreate);  while FileExists(path + '.' + IntToStr(i)) do  begin    ms.LoadFromFile(path + '.' + IntToStr(i));    fs.CopyFrom(ms, 0); {TFileStream 不需要 SetSize; 但如果用 TMemoryStream 就需要}    Inc(i);  end;  ms.Free;  fs.Free;end;//测试分割procedure TForm1.Button1Click(Sender: TObject);begin  SplitFile('c:\temp\test.txt', 10);end;//测试合并procedure TForm1.Button2Click(Sender: TObject);begin  MergeFile('c:\temp\test.txt.0');end;end.

转载于:https://my.oschina.net/hermer/blog/320805

你可能感兴趣的文章
金三银四:蚂蚁金服JAVA后端面试题及答案之二面
查看>>
Ubuntu 外网不通解决方案
查看>>
OSChina 周六乱弹 —— 历史总是惊人的相似
查看>>
MySQL 大小写
查看>>
div块上下左右居中
查看>>
eclipse远程debug tomcat
查看>>
CentOs6.5基本环境配置(六):Maven配置
查看>>
Python 创建Django项目
查看>>
JS获取当前项目的根路径
查看>>
操作系统引导区代码
查看>>
程序员有五种错误不应犯
查看>>
无线认证知识点
查看>>
基于python的REST框架eve测试与mongodb的数据操作
查看>>
epoll模型的理解封装与应用
查看>>
Lync 2013部署图片赏析-证书服务安装配置
查看>>
HTML5 本地缓存 (web存储)
查看>>
tomcat redis session共享(包含redis安全设置)
查看>>
iptables中DNAT、SNAT和MASQUERADE的作用
查看>>
kvm命令学习记录
查看>>
小菜鸡进阶之路-First week
查看>>