把一个文件分为多个文件?(100分)

  • 主题发起人 主题发起人 yd
  • 开始时间 开始时间
Y

yd

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样把一个文件分为多个文件,以及把多个文件合并成一个文件?
 
最简单的, winzip直接压缩到小盘上

编程: 自己写一个程序, 从文件头开始, 每读n个字节就save到一个文件,
比如 filename.001, filename.002等, 恢复的话可以直接用copy命令.
或者自己做个程序恢复.

用工具: 有许多工具的, 如Fsplite等.
 
小生愚钝:
你的问题分类是数据库?
你想拆分一般的文件,还是拆分数据表?为什么要拆分数据表?
 
winzip好像不支持分卷压缩吧? 还是我不会用?
 
Truncate : 从文件当前位置将文件截断
 
用TfileStream,或者api都行
首先TFileStream.create,要拆成几块就读到几个缓冲区里去,通过设置size
属性设置缓冲区的大小
再用createFile建立几个新文件,住里头读...
合并文件与上述相反
 
我这有个文件分割控件,需要吗?
 
自己做一个,读文件到指定位置,合并用COPY /b ...
 
>>winzip好像不支持分卷压缩吧? 还是我不会用?
呵呵,winzip可以压缩分到软盘上的……
 
1tox:专用于将一个文件分为多个文件,以及把多个文件合并成一个文件。
缺点:每个文件都必须等大。

 
用arj启不最好,又压缩,又分割。
 
我这有个分割工具RZSplit,可以将文件分割,另以上大侠所述的winzip,arj也行,winrar比winzip好用,分卷在硬盘就行。
 
cAkk: 也不知道该说Winzip是笨还是聪明, 当压缩到硬盘上的时候它是
不会分卷的, 当压缩到移动磁盘上的时候它倒是会自动分卷. :p

add的时候直接填目标文件名为: a:... 就可以的了.
 
to springm Truncate怎么用?
 
arj a -v1440 filename path:/*.* -r

 
上面各位大侠已经都说清楚了,难道不是你想要的?
若一定要用Delphi编程实现,我可以贴代码给你。
 
To 龙丹:
请贴代码!
 
lsj:我不知道你具体的应用需求是什么,我假设:
把一个尺寸为有若干M的文件分解成最大不超过300K的多个文件,代码如下:
const
AFileSize=300*1024;
procedure BreakFile(FileName:string);
function CopyDataToSmallFile(S:TFileStream;Index:integer):integer;
var
T:TFileStream;
begin
Result:=0;
S.Position:=Index*AFileSize;
if S.Position>=S.Size then EXIT;
T:=TFileStream.Create(Format('%s_%d',[FileName,Index]),fmCreate);
try
Result:=T.CopyFrom(S,AFileSize);
finally
T.Free;
end;
end;
var
S:TFileStream;
Index:integer;
begin
S:=TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone);
try
Index:=0;
while CopyDataToSmallFile(Index)=AFileSize do
Inc(Index);
finally
S.Free;
end;
end;

要合并这些小文件,可以用DOS Copy命令,也可另写一个函数来实现(自己写吧)。
以上代码我是直接在这里写的,没有测试过,估计没什么大问题。
当然,在实用程序中,可能还需要处理文件重名、覆写之类的问题。
 
后退
顶部