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));
                }
            }
        }
    }
  • 相关阅读:
    客户端登录状态下打开对应网站也处于登陆状态
    C#替换HTML标签
    常用地址
    实时检测网络状态及是否可以连接Internet
    linux iconv 批量转码
    Linux PCI网卡驱动分析
    Cache写机制:Writethrough与Writeback
    addr2line 动态库
    PCI总线原理(二)
    Co.,Ltd.
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2889906.html
Copyright © 2011-2022 走看看