zoukankan      html  css  js  c++  java
  • Java基础之IO流,合并流对象SequenceInputStream对文件的切割与合并操作

    文件的切割:

    import java.io.*;

    class SplitFilesDemo
    {
        public static void main(String[] args) throws Exception
        {
            File file = new File("a.avi");
            
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
            FileOutputStream fos = null
            
            byte[] buffer = new byte[1024*1024*10];
            int length= 0,count = 1;
            
            while((length=bis.read(buffer))!=-1)
            {
                fos = new FileOutputStream("split\\"+count+++".part");
                fos.write(buffer,0,length);
                fos.close();
            }        
            
            bis.close();
        }
    }

    使用合并流对象SequenceInputStream对文件进行合并

    import java.io.*;
    import java.util.*;

    class MergeFilesDemo
    {
        public static void main(String[] args) throws Exception
        {
            List<FileInputStream> files = new ArrayList<FileInputStream>();
            getFiles(new File("split"),".part",files);
            
            final Iterator<FileInputStream> it = files.iterator();
            Enumeration<FileInputStream> em = new Enumeration<FileInputStream>(){
                public boolean hasMoreElements()
                {
                    return it.hasNext();
                }
                
                public FileInputStream nextElement()
                {
                    return it.next();
                }
            };
            
            SequenceInputStream sis = new SequenceInputStream(em);        
            FileOutputStream fos = new FileOutputStream(new File("b.avi"));
            
            int length = 0;
            byte[] buffer = new byte[1024*1024*10];
            while((length=sis.read(buffer))!=-1)
            {
                fos.write(buffer,0,length);
            }
            
            fos.close();
            sis.close();
        }
        
        public static void getFiles(File dir,String suffix,List<FileInputStream> listFiles) throws Exception
        {
            File[] files = dir.listFiles();
            for(File file : files)
            {
                if(file.isDirectory())
                {
                    getFiles(file,suffix,listFiles);
                }
                else
                {
                    if(file.getName().endsWith(suffix))
                        listFiles.add(new FileInputStream(file));
                }
            }
        }
    }
  • 相关阅读:
    参考阿里规范,优秀的 Java 项目代码该如何分层?
    SpringBoot 中实现跨域的5种方式
    美团一面:你既然写过Mybatis插件,说说它底层是怎么加载一个自定义插件的
    陌陌面试官:说说Spring AOP 的原理、SpringMVC 的处理过程?
    这16条规范代码,同事,拍桌子 大喊 “666”
    微服务很简单,用一张架构图了解一下
    K8S部署Metrics-Server服务
    cookie
    html标签默认样式整理
    html 语义化标签
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2889906.html
Copyright © 2011-2022 走看看