zoukankan      html  css  js  c++  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();
            }
        }
    }
  • 相关阅读:
    brew一直卡在Updating Homebrew的解决办法
    ELK5.6.4+Redis+Filebeat+Nginx(CentOS7.4)
    CentOS7.3 ffmpeg安装
    nginx Dockerfile
    pip安装第三方包超时
    logrotate nginx日志切割
    Ansible部署zabbix-agent
    Zabbix主动模式和被动模式
    Zabbix添加监控主机
    Zabbix3.2安装
  • 原文地址:https://www.cnblogs.com/JimmyXie/p/3806317.html
Copyright © 2011-2022 走看看