zoukankan      html  css  js  c++  java
  • SequenceInputStream

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.SequenceInputStream;
    import java.util.ArrayList;
    import java.util.Enumeration;
    import java.util.Vector;
    
    /*
    SequenceInputStream(序列流)
    
      
     
     
     
    需求:把a.txt与b.txt 文件的内容合并。
    
     */
    public class Demo1 {
        
        public static void main(String[] args) throws IOException {
            merge3();
        }
        
        //把三个文件合并成一个文件
        public static void merge3() throws IOException{
            //找到目标文件
            File file1 = new File("F:\a.txt");
            File file2 = new File("F:\b.txt");
            File file3 = new File("F:\c.txt");
            File file4 = new File("F:\d.txt");
            
            
            //建立对应 的输入输出流对象
            FileOutputStream fileOutputStream = new FileOutputStream(file4);
            FileInputStream fileInputStream1 = new FileInputStream(file1);
            FileInputStream fileInputStream2 = new FileInputStream(file2);
            FileInputStream fileInputStream3 = new FileInputStream(file3);
    
            //创建序列流对象
            Vector<FileInputStream> vector = new Vector<FileInputStream>();
            vector.add(fileInputStream1);
            vector.add(fileInputStream2);
            vector.add(fileInputStream3);
            Enumeration<FileInputStream> e = vector.elements();
    
            SequenceInputStream sequenceInputStream = new SequenceInputStream(e);
            
            //读取文件数据
            byte[] buf = new byte[1024];
            int length = 0; 
            
            while((length = sequenceInputStream.read(buf))!=-1){
                fileOutputStream.write(buf,0,length);
            }
            
            //关闭资源
            sequenceInputStream.close();
            fileOutputStream.close();
            
        }
        
        
        
    //    使用SequenceInputStream合并文件。
        public static void merge2() throws IOException{
            //找到目标文件
            File inFile1 = new File("F:\a.txt");
            File inFile2 = new File("F:\b.txt");
            File outFile = new File("F:\c.txt");
            //建立数据的输入输出通道
            FileOutputStream fileOutputStream = new FileOutputStream(outFile);
            
            FileInputStream fileInputStream1 = new FileInputStream(inFile1);
            FileInputStream fileInputStream2 = new FileInputStream(inFile2);
            //建立序列流对象
            SequenceInputStream inputStream = new SequenceInputStream(fileInputStream1,fileInputStream2);
            byte[] buf = new byte[1024];
            int length = 0 ; 
            
            while((length = inputStream.read(buf))!=-1){
                fileOutputStream.write(buf,0,length);
            }
            //关闭资源
            inputStream.close();
            fileOutputStream.close();
    
        }
        
        
        //需求:把a.txt与b.txt 文件的内容合并。
        public static void merge1() throws IOException{
            //找到目标文件
            File inFile1 = new File("F:\a.txt");
            File inFile2 = new File("F:\b.txt");
            File outFile = new File("F:\c.txt");
            //建立数据的输入输出通道
            FileOutputStream fileOutputStream = new FileOutputStream(outFile);
            FileInputStream fileInputStream1 = new FileInputStream(inFile1);
            FileInputStream fileInputStream2 = new FileInputStream(inFile2);
            
            //把输入流存储到集合中,然后再从集合中读取
            ArrayList<FileInputStream> list = new ArrayList<FileInputStream>();
            list.add(fileInputStream1);
            list.add(fileInputStream2);
            
            //准备一个缓冲数组
            byte[] buf = new byte[1024];
            int length = 0 ; 
            
            for(int i = 0 ; i< list.size() ; i++){
                FileInputStream fileInputStream = list.get(i);
                while((length = fileInputStream.read(buf))!=-1){
                    fileOutputStream.write(buf,0,length);
                }
                //关闭资源
                fileInputStream.close();
            }
            fileOutputStream.close();
            
        }
    
    }
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.SequenceInputStream;
    import java.util.Enumeration;
    import java.util.Vector;
    
    /*
     
     需求: 把一首mp3先切割成n份,然后再把这些文件合并起来。
     
     */
    
    
    public class Demo2 {
    
        public static void main(String[] args) throws IOException {
    //        cutFile();
            mergeFlile();
        }
        
        //合并
        public static void mergeFlile() throws IOException{
            //找到目标文件
            File dir = new File("F:\music");
            //通过目标文件夹找到所有的MP3文件,然后把所有的MP3文件添加到vector中。
            Vector<FileInputStream> vector = new Vector<FileInputStream>();
            File[] files = dir.listFiles();
            for(File file : files){
                if(file.getName().endsWith(".mp3")){
                    vector.add(new FileInputStream(file));
                }
            }
            //通过Vector获取迭代器
            Enumeration<FileInputStream> e = vector.elements();
            //创建序列流
            SequenceInputStream inputStream = new SequenceInputStream(e);
            //建立文件的输出通道
            FileOutputStream fileOutputStream = new FileOutputStream("F:\合并.mp3");
            //建立缓冲数组读取文件
            byte[] buf = new byte[1024];
            int length = 0 ; 
            while((length =  inputStream.read(buf))!=-1){
                fileOutputStream.write(buf,0,length);
            }
            //关闭资源
            fileOutputStream.close();
            inputStream.close();
            
        }
        
        
        
        //切割MP3
        public static void cutFile() throws IOException{
            File file = new File("F:\美女\1.mp3");
            //目标文件夹
            File dir = new File("F:\music");
            //建立数据的输入通道
            FileInputStream fileInputStream = new FileInputStream(file);
            //建立缓冲数组读取
            byte[] buf = new byte[1024*1024];
            int length = 0;
            for(int i = 0 ;  (length = fileInputStream.read(buf))!=-1 ; i++){
                FileOutputStream fileOutputStream =    new FileOutputStream(new File(dir,"part"+i+".mp3"));
                fileOutputStream.write(buf,0,length);
                fileOutputStream.close();
            }
            //关闭资源
            fileInputStream.close();
        }
        
        
    }
  • 相关阅读:
    用Jenkins构建Django持续集成环境
    DACLs and ACEs
    windows共享文件分析
    summary
    Mysql InnoDB行锁实现方式
    网关 整理 fastcgi wsgi
    Git提交代码规范 而且规范的Git提交历史,还可以直接生成项目发版的CHANGELOG(semantic-release)
    松本行弘:代码的未来(图灵访谈)
    “对外部(局部)变量的访问”是C语言函数指针的最大弱点
    CAP解决方案-BASE
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6413743.html
Copyright © 2011-2022 走看看