首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 程序开发 > JAVA专栏 > 正文
  • 用Java简单实现文件分割与合并
      2007-3-14  来源:网络资源  编辑:Jsbulo  热度:

      主要应用IO的RandomAccessFile(听说断点续传也是用它实现)

    import java.io.*;

    class Fen{
    String fileName;
    int size;

    Fen(String fileName,String size){
    this.fileName = fileName;
    this.size = Integer.parseInt(size)*1024;
    }

    public void cut()throws Exception{
    int maxx = 0;
    File inFile = new File(fileName);

    int fileLength = (int)inFile.length(); //取得文件的大小
    int value; //取得要分割的个数

    RandomAccessFile inn = new RandomAccessFile(inFile,"r");//打开要分割的文件


    value = fileLength/size;

    int i=0;
    int j=0;

    //根据要分割的数目输出文件
    for (;j File outFile = new File(inFile.getName()+j+"zzii");
    RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
    maxx+=size;
    for (;i outt.write(inn.read());
    }
    outt.close();
    }
    File outFile = new File(inFile.getName()+j+"zzii");
    RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
    for(;i
    outt.write(inn.read());
    }
    outt.close();

    inn.close();
    }
    }


    class He{
    String fileName;
    String filterName;

    He(String fileName,String filterName){
    this.fileName = fileName;
    this.filterName = filterName;
    }


    public void unite()throws Exception{
    String [] tt;
    File inFile = new File("."); //在当前目录下的文件
    File outFile = new File(fileName); //取得输出名
    RandomAccessFile outt= new RandomAccessFile(outFile,"rw");

    //取得符合条件的文件名
    tt = inFile.list(new FilenameFilter(){
    public boolean accept(File dir,String name){
    String rr = new File(name).toString();
    return rr.endsWith(filterName);
    }
    });
    //打印出取得的文件名
    for (int i = 0;i System.out.println(tt[i]);
    }

    //打开所有的文件再写入到一个文件里
    for(int i=0;i inFile = new File(tt[i]);
    RandomAccessFile inn= new RandomAccessFile(inFile,"r");
    int c;
    while((c=inn.read())!=-1)
    outt.write(c);
    }

    outt.close();
    }
    }


    public class test{
    public static void main(final String [] args)throws Exception{

    if(args.length==0){
    print();
    return;
    }
    if(args[0].equals("-c")){
    Fen cutt = new Fen(args[1],args[2]);
    cutt.cut();
    }
    else if (args[0].equals("-r")){
    He hee = new He(args[1],args[2]);
    hee.unite();
    }
    else
    print();

    }

    public static void print(){
    System.out.println("usage:\n分: java test -c file1 size(单位为K)\n合 java test -r file2 zzii(我设置的方便标识)");
    }
    }