zoukankan      html  css  js  c++  java
  • Java---练习:文件切割与合并(1)

    实现对大文件的切割与合并。
    按指定个数切(如把一个文件切成10份)或按指定大小切(如每份最大不超过10M),这两种方式都可以。

    示例程序说明:
    文件切割:把一个文件切割成多个碎片,每个碎片的大小不超过1M。自己可把功能进一步扩展:切割前的文件名、长度,切割后的碎片个数、文件名等信息可写到第一个碎片中或另外用properties把这些写到配置文件中。
    文件合并:这里简单假设已知被合并目录的File对象和原文件的名字。其实这些完全可以做成活的,如把这些信息保存在碎片文件或配置文件,也可以同样用文件选择对话框来读取用户的选择。

    实现代码:

    “`
    package io.string;

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.SequenceInputStream;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Enumeration;
    import java.util.Scanner;

    public class SequenceInputStreamDemo {
    static final String FILE = “e:fenge”;
    public static void main(String[] args) throws IOException {
    Scanner sc = new Scanner(System.in);
    System.out.println(“请输入fenge文件下需要分割的文件名(需要后缀):”);
    String str = sc.next();
    InputStream in =new BufferedInputStream(new FileInputStream(FILE+str));

        OutputStream out = null;
        long t = 0;
        String c = "chx";
        int le;
        byte bt[] = new byte[10240];
        while((le=in.read(bt))!=-1){
            out = new BufferedOutputStream(new FileOutputStream(FILE+c+t+"_"+str));
            out.write(bt, 0, le);
            t++;
        }
        in.close();
        out.close();
        System.out.println("文件合并开始:::");
        ArrayList<FileInputStream> v = new ArrayList<FileInputStream>();
        for(int i=0;i<t;i++){
            FileInputStream f = new FileInputStream(FILE+c+i+"_"+str);
            v.add(f);
        }
        Enumeration<FileInputStream> e = Collections.enumeration(v);
        SequenceInputStream sin = new SequenceInputStream(e);
    
        FileOutputStream fout = new FileOutputStream(FILE+c+str);
        int len=0;
        byte bf[] = new byte[1024];
        while((len=sin.read(bf))!=-1){
            fout.write(bf, 0, len);
        }
        fout.close();
        System.out.println("文件合并结束:::");
    }
    

    }

    “`

    文件目录:

    目前只实现了切割合并那一个文件夹下的文件!!!!

  • 相关阅读:
    git工具命令整理
    使用nodeJs操作redis
    electron 7.x 设置开发环境与生产模式 隐藏菜单栏和开发者工具 devtools
    electron 打包问题 解决
    sso单点登录之跨域cookie共享 (跨域缓存共享)
    浏览器线程执行顺序
    JS如何将变量作为一个对象的Key
    DevOps流程的简单总结
    通过key 寻找数组内对象的某一项
    根据key查找对象数组中符合的一项 返回对象(递归)
  • 原文地址:https://www.cnblogs.com/webmen/p/5739254.html
Copyright © 2011-2022 走看看