zoukankan      html  css  js  c++  java
  • 文件分割

    package com.company;
    
    import org.junit.Test;
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    
    /**
     * Created by Administrator on 2016-9-13.
     */
    public class FIletest {
    
    
        public void split(String filePath, int filesize, String path) throws Exception {
            File file = new File(filePath);
            if (!file.exists()) {
                throw new Exception("源文件不存在");
            }
            //分割后有多少文件
            long num = file.length() % filesize == 0 ? file.length() / filesize : (file.length() / filesize) + 1;
            System.out.println("一共分为" + num + "份文件");
            FileInputStream fileInputStream = new FileInputStream(file);
            byte[] buffer = new byte[filesize];
            int length;
            FileOutputStream fileOutputStream = null;
            for (int i = 0; i < num; i++) {
                if ((length = fileInputStream.read(buffer)) != -1) {
                    fileOutputStream = new FileOutputStream(new File(path, i + ".sfz"));
                    fileOutputStream.write(buffer, 0, length);
                    fileOutputStream.flush();
                    fileOutputStream.close();
                    System.out.println("copy一份,name为" + i + ".sfz");
                }
            }
            fileInputStream.close();
        }
    
    
        public void merge(String name, String filepath) throws IOException {
            File file = new File(filepath);
            if (!file.exists()) {
                throw new IOException();
            }
            File[] files = file.listFiles();
            int length = files.length;
            File filefg = null;
            FileOutputStream fileOutputStream = new FileOutputStream(name);
            FileInputStream fileInputStream = null;
            for (int i = 0; i < length; i++) {
                filefg = new File(filepath, i + ".sfz");
                fileInputStream = new FileInputStream(filefg);
                byte[] buff = new byte[(int) filefg.length()];
                int len = fileInputStream.read(buff);
                if (len != -1) {
                    fileOutputStream.write(buff, 0, len);
                }
                fileInputStream.close();
                System.out.println("添加一个文件");
            }
            fileOutputStream.flush();
            fileOutputStream.close();
        }
        
    
    
        @Test
        public  void  test1() throws Exception {
            FIletest f = new FIletest();
            f.split("D://诛仙青云志.mp4", 1024 * 1024, "d://诛仙青云志");
        }
    
        @Test
        public  void  test2() throws Exception {
            FIletest f = new FIletest();
            f.merge("D://诛仙青云志25.mp4", "D://诛仙青云志");
        }
    }
  • 相关阅读:
    排序算法:冒泡排序
    排序算法: 插入排序
    排序算法:折半插入排序
    排序算法:快速排序
    浅谈C/C++回调函数(Callback)& 函数指针
    仿函数
    回溯法:求和
    动态规划:数字和为sum的方法数
    字典序
    剑指offer15 二进制中1的个数
  • 原文地址:https://www.cnblogs.com/songfahzun/p/5868098.html
Copyright © 2011-2022 走看看