java用IO流实现文件拆分和合并,拆分加密文件

本文主要写java用IO流实现文件拆分,根据拆分细度起到文件加密拆分作用

1.文件拆分,

主要实现方式:将文件根据字节拆分并依照顺序写入多个文件

 public static void t1()throws Exception{
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream(new File("E://要拆分的文件.mp4")));
        BufferedOutputStream bos1=new BufferedOutputStream(new FileOutputStream(new File("E://1")));
        BufferedOutputStream bos2=new BufferedOutputStream(new FileOutputStream(new File("E://2")));
        BufferedOutputStream bos3=new BufferedOutputStream(new FileOutputStream(new File("E://3")));
        byte[] b=new byte[1];
        int n=0;
        n=bis.read(b);
        for(int i=0;n>0;i++){
            switch (i%3){
                case 0:bos1.write(b);break;
                case 1:bos2.write(b);break;
                case 2:bos3.write(b);break;
            }
            n=bis.read(b);
        }
        bos1.flush();
        bos2.flush();
        bos3.flush();
        bos1.close();
        bos2.close();
        bos3.close();
        bis.close();
    }

2.拆分的文件合并

需要按照拆分的顺序合并文件

public static void t2()throws Exception{
        BufferedInputStream bis1=new BufferedInputStream(new FileInputStream(new File("E://1")));
        BufferedInputStream bis2=new BufferedInputStream(new FileInputStream(new File("E://2")));
        BufferedInputStream bis3=new BufferedInputStream(new FileInputStream(new File("E://3")));
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File("E://最终文件.mp4")));
        byte[] b=new byte[1];
        int n=0;
        for(int i=0;;i++){
            n=bis1.read(b);
            if(n>0){
                bos.write(b);
            }else {
                break;
            }
            n=bis2.read(b);
            if(n>0){
                bos.write(b);
            }else {
                break;
            }
            n=bis3.read(b);
            if(n>0){
                bos.write(b);
            }else {
                break;
            }
        }
        bis1.close();
        bis2.close();
        bis3.close();
        bos.flush();
        bos.close();
    }

3.动态的以传参的形式实现文件拆分和合并

(1)拆分代码

public static void tk1(String inputFileName, String[] outputFileNames)throws Exception{
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream(new File(inputFileName)));
        List<BufferedOutputStream> list=new ArrayList<>();
        for(int i=0;i<outputFileNames.length;i++){
            BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(outputFileNames[i])));
            list.add(bos);
        }
        byte[] b=new byte[1];
        int n=0;
        n=bis.read(b);
        for(int i=0;n>0;i++){
            list.get(i%list.size()).write(b);
            n=bis.read(b);
        }
        list.forEach(o->{
            try {
                o.flush();
                o.close();
            }catch (Exception e){

            }
        });
        bis.close();
    }

(2)合并代码

public static void tk2(String outputFileName, String[] inputFileNames)throws Exception{
        List<BufferedInputStream> list=new ArrayList<>();
        for(int i=0;i<inputFileNames.length;i++){
            BufferedInputStream bis=new BufferedInputStream(new FileInputStream(new File(inputFileNames[i])));
            list.add(bis);
        }
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(outputFileName)));
        byte[] b=new byte[1];
        int n=0;
        out:for(int i=0;;i++){
            for(int j=0;j<list.size();j++){
                n=list.get(j).read(b);
                if(n>0){
                    bos.write(b);
                }else {
                    break out;
                }
            }
        }
        list.forEach(o->{
            try {
                o.close();
            }catch (Exception e){

            }
        });
        bos.flush();
        bos.close();
    }

调用的代码

        //拆分
        String[] strs=new String[]{"E://1","E://2","E://3"};
        tk1("E://要拆分的文件.mp4",strs);
        //合并
        String[] strs=new String[]{"E://1","E://2","E://3"};
        tk2("E://最终文件.mp4",strs);

代码可以根据需要调整byte数组的大小改变拆分效率。
数组越大,运行速度就越快。
数组越小,越能起到加密作用。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值