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));
                }
            }
        }
    }
  • 相关阅读:
    阿里轻量应用服务器 Tomcat 注意的地方 Unsupported major.minor version 52.0(unable to load class
    微信小程序-进度条循环播放
    微信小程序-动画
    微信小程序-自定义分享
    微信小程序-引导页
    微信小程序-时间轴
    微信小程序-两次点击不同图片交换图片位置
    Kafka消费者——消费者客户端多线程实现
    Kakfa消费者——原理及分析
    Kafka基础——Kafka架构
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2889906.html
Copyright © 2011-2022 走看看