SequenceInputStream(序列流)

来源:互联网 发布:怎样做淘宝模板 编辑:程序博客网 时间:2024/05/21 10:17
package cn.itcast.other;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();    }}
package cn.itcast.other;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();    }}
0 0
原创粉丝点击