• 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));
                }
            }
        }
    }
  • 相关阅读:
    记一个SharePoint Workflow一睡永不醒来的问题
    .NET Tracing简介
    !aspxpages(即!dumphttpcontext)命令输出的解释
    MOSS定时爬网无法启动的问题
    Persistent cookies和Session cookies的定义与区别
    跨SharePoint服务器场的Content Deployment的一个知识点
    如何明确指定命令所在的debugger extension?
    理解SharePoint中的备用访问映射(Alternate Access Mapping)
    biztalk中ACK、NACK详测示例【转】
    深入biztalk消息以及消息订阅发布路由机制(一)-消息概述【转】
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2889906.html
Copyright © 2020-2023  润新知