首页 > 代码库 > java文件分割和合并

java文件分割和合并

package search;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class Split {        /**每个小文件大小*/    static final int SIZE = 1024*1024*5;    /**需要分割的文件*/    static final String SOURCE = "E:/t_question.sql";    /**分割后输出的目录*/    static final String SOURCE_OUT = "E:/test/";    /**合并后的文件*/    static final String DST = "G:/quesion.sql";    public static void main(String[] args) throws IOException{        split();    }    /**     * 文件分割     * @throws IOException     */    public static void split() throws IOException{        File file = new File(SOURCE);        FileInputStream raf = new FileInputStream(file);        FileChannel fc = raf.getChannel();        long fileSize = fc.size();                int count = (int) (fileSize/SIZE);        ByteBuffer dst = ByteBuffer.allocate(SIZE);        for(int i=0 ; i <=count  ; i++){            FileOutputStream fs = new FileOutputStream(new File(SOURCE_OUT+i));            if(i!=count){                fc.read(dst,SIZE*i);                fs.write(dst.array());            }else{                fileSize = fileSize -SIZE*count;                System.out.println(fileSize);                ByteBuffer dstTail = ByteBuffer.allocate((int) fileSize);                fs.write(dstTail.array());            }            fs.flush();            dst.clear();        }        }        /**     * 合并文件     * @throws Exception     */    public static void merge()throws Exception{        File parentFile = new File(SOURCE_OUT);        File fileDst = new File(DST);        FileChannel fs =  new FileOutputStream(fileDst, true).getChannel();        try{             for(File file :parentFile.listFiles()){                 FileChannel fc = new FileInputStream(file).getChannel();                 ByteBuffer by = ByteBuffer.allocate((int) fc.size());                 fc.read(by);                 by.position(0);                 fs.write(by);                              }        }finally{            fs.close();        }    }}