• 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();
            }
        }
    }
  • 相关阅读:
    nc 服务器nc l 9995实现双向通信
    Python2/Python3使用virtualenv创建虚拟环境venv
    Linux Openwrt CPU使用率
    JS中slice和splice的区别
    Vue3中路由跳转的语法
    Antd中的table组件报错问题的解决
    Word替换文本的方法记录
    Vite2 Error:Unknown variable dynamic import
    使用SSH方式拉取代码
    css单行超出加省略号
  • 原文地址:https://www.cnblogs.com/JimmyXie/p/3806317.html
Copyright © 2020-2023  润新知