Love Coding
不断的学习,才能进步

    需要文本文件,按字节大小分割,我在网上找了段代码(如下图所示),能实现对文本文件的分隔,但如果遇到双字节,就可能拆分这个双字节,造成部分乱码。看了很多资料,我认为如果能够判断指定位置的字节是不是双字节或单字节,就容易解决了。小弟delphi不是很熟悉,望各们大侠指点一下,万分感谢。 

 1 分割文件的函数
 2 {参数 1 是要分割的文件名; 参数 2 是要分割文件的大小, 单位是 KB}
 3 {分割后的文件名扩展名用序号替换}
 4 function SplitFile(const FileName: string; Size: Cardinal): Boolean;
 5 var
 6 fStream: TFileStream;    {原始文件}
 7 toStream: TMemoryStream; {分文件}
 8 p,i: Integer;            {p 记录当前指针位置; i 记录这是第几个分的文件}
 9 begin
10 Result := False;
11 
12 Size := Size * 1024;     {把大小的单位转换为字节}
13 
14 fStream := TFileStream.Create(FileName, fmOpenRead);
15 p := 0;
16 i := 0;
17 
18 toStream := TMemoryStream.Create;
19 
20 while p < fStream.Size do
21 begin
22     toStream.Clear;        {清空上次数据}
23     fStream.Position := p; {放好指针位置}
24 
25     if fStream.Size-p < Size then Size := fStream.Size-p; {最后一个时, 有多少算多少}
26 
27     toStream.CopyFrom(fStream, Size); {复制}
28     toStream.SaveToFile(FileName + '.' + IntToStr(i));        {保存}
29     Inc(i);
30     p := p + Size;
31 end;
32 
33 fStream.Free;
34 toStream.Free;
35 Result := True;
36 end;

 

 

 

posted on 2012-10-15 22:33  云者悟空  阅读(970)  评论(2)    收藏  举报