HanDs
NO.2

[Delphi文章] 文件分割与合并 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

unit Unit1; 
 
interface 
 
uses 
 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. 


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
文件 分割 合并
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组