精品主页 | 软件下载 | 系统下载 | 精品导航| 精彩图片 | 转帖工具 | 版主申请 | 影视下载
发新话题
打印

用Java简单实现文件分割与合并

用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(我设置的方便标识)");

}

}

TOP

发新话题