用Java简单实现文件分割与合并
主要应用IO的RandomAccessFile(听说断点续传也是用它实现)
importjava.io.*;
classFen{
StringfileName;
intsize;
Fen(StringfileName,Stringsize){
this.fileName=fileName;
this.size=Integer.parseInt(size)*1024;
}
publicvoidcut()throwsException{
intmaxx=0;
FileinFile=newFile(fileName);
intfileLength=(int)inFile.length();//取得文件的大小
intvalue;//取得要分割的个数
RandomAccessFileinn=newRandomAccessFile(inFile,"r");//打开要分割的文件
value=fileLength/size;
inti=0;
intj=0;
//根据要分割的数目输出文件
for(;j<value;j ){
FileoutFile=newFile(inFile.getName() j "zzii");
RandomAccessFileoutt=newRandomAccessFile(outFile,"rw");
maxx =size;
for(;i<maxx;i ){
outt.write(inn.read());
}
outt.close();
}
FileoutFile=newFile(inFile.getName() j "zzii");
RandomAccessFileoutt=newRandomAccessFile(outFile,"rw");
for(;i<fileLength;i ){
outt.write(inn.read());
}
outt.close();
inn.close();
}
}
classHe{
StringfileName;
StringfilterName;
He(StringfileName,StringfilterName){
this.fileName=fileName;
this.filterName=filterName;
}
publicvoidunite()throwsException{
String[]tt;
FileinFile=newFile(".");//在当前目录下的文件
FileoutFile=newFile(fileName);//取得输出名
RandomAccessFileoutt=newRandomAccessFile(outFile,"rw");
//取得符合条件的文件名
tt=inFile.list(newFilenameFilter(){
publicbooleanaccept(Filedir,Stringname){
Stringrr=newFile(name).toString();
returnrr.endsWith(filterName);
}
});
//打印出取得的文件名
for(inti=0;i<tt.length;i ){
System.out.println(tt);
}
//打开所有的文件再写入到一个文件里
for(inti=0;i<tt.length;i ){
inFile=newFile(tt);
RandomAccessFileinn=newRandomAccessFile(inFile,"r");
intc;
while((c=inn.read())!=-1)
outt.write(c);
}
outt.close();
}
}
publicclasstest{
publicstaticvoidmain(finalString[]args)throwsException{
if(args.length==0){
print();
return;
}
if(args[0].equals("-c")){
Fencutt=newFen(args[1],args[2]);
cutt.cut();
}
elseif(args[0].equals("-r")){
Hehee=newHe(args[1],args[2]);
hee.unite();
}
else
print();
}
publicstaticvoidprint(){
System.out.println("usage:分:javatest-cfile1size(单位为K)合javatest-rfile2zzii(我设置的方便标识)");
}
}