首页
社区
课程
招聘
[原创]我写的切割文件的代码
发表于: 2020-4-9 19:53 2629

[原创]我写的切割文件的代码

2020-4-9 19:53
2629

由于蓝奏云限制100MB的大小,所以写了个命令行小工具。
存在的问题,切割速度不理想,没有进度跳,以后再改进吧。

 

{$APPTYPE CONSOLE}

 

Uses
SysUtils,Classes,Variants ;

 

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 := 1;

 

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)); {保存}
//Format('%02d',[IntToStr(i)]);
toStream.SaveToFile(FileName + '.' + Format('%.3d',[i]));
// Format('this is %d %d',[12,13]);

 

Inc(i);
p := p + Size;
end;

 

fStream.Free;
toStream.Free;
Result := True;
end;

 

var
infile:string = 'Athena Chu.wav';
begin
// infile
SplitFile(infile,3010241024); // 分割成30MB的大小
//writeln(format('%02s',[IntToStr(8)]));
//writeln(format('%.2d',[8])); // 这个是对的
end.


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
最后感谢一下坛里所有帮助过的朋友。
2020-4-9 19:53
0
雪    币: 9626
活跃值: (1838)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
3
。。。压缩包不是可以分卷压缩吗
2020-4-9 20:46
0
雪    币: 10077
活跃值: (3261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Hjsplit
2020-4-9 21:52
0
游客
登录 | 注册 方可回帖
返回
//