zoukankan      html  css  js  c++  java
  • JavaIO

    1. SequenceInputStream

    表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

    SequenceInputStream 可以认为是一个工具类,将两个或者多个输入流当成一个输入流依次读取。完全可以从 IO 包中去除,还完全不影响 IO 包的结构,却让其更 “纯洁” ――纯洁的 Decorator 模式。

    1-1. 序列流应用

    • 序列流只负责源。对多个流进行合并。
    • 切割or合并。将一个文件切割成多个文件 && 将多个文件碎片合并成一个文件。

    1-2. SequenceInputStream序列流的步骤

    1. 找到目标文件
    2. 建立数据输入输出通道
    3. 建立序列流对象
    4. 关闭资源

    2. 实例

    - 切割MP3:

    public static void cutFile() throws IOException{
        File file = new File("E:\Music\忘尘谷.mp3");
        //目标文件夹
        File dir = new File("E:\MyMusic");
        //建立数据输入通道
         FileInputStream fis = new FileInputStream(file);
        //建立缓冲数组
        byte[] buf = new byte[1024*1024];//1024*1024 = 1MB,即:把该音乐切割成每份1MB的大小
        int length = 0;
        //边读边写
        for (int i = 0; (length=fis.read(buf)) != -1; i++) {//读 (每次读1MB)
            FileOutputStream fos = new FileOutputStream(new File(dir,"wcg"+i+".mp3"));//建立数据输出通道
            fos.write(buf, 0, length);//
            fos.close();
        }
        fis.close();
    }

    - 合并MP3:

    public static void mergeFile() throws IOException{
        //找到目标文件
        File dir = new File("E:\MyMusic");
        //通过目标文件找到所有mp3,然后把这些mp3添加到vector集合中
        Vector<FileInputStream> vector = new Vector<FileInputStream>();
        File[] file = dir.listFiles();
        for (File file2 : file) {
            if(file2.getName().endsWith(".mp3")){//获取以.mp3结尾的文件名
                vector.add(new FileInputStream(file2));//添加到vector集合中
            }
        }
        Enumeration<FileInputStream> e = vector.elements();//返回此向量组件的枚举。即把上面集合中的元素给了e对象
        SequenceInputStream sis = new SequenceInputStream(e);//建立序列流对象//建立缓冲数组读取文件
        byte[] buf = new byte[1024];
        int length = 0;
        FileOutputStream fos = new FileOutputStream(new File("MyMusic\MergeMusic\合并音乐-忘尘谷.mp3"));//建立输出字节流
        while((length = sis.read(buf)) != -1){//
            fos.write(buf, 0, length);//
        }
        fos.close();
        sis.close();
    }
  • 相关阅读:
    《反恐精英》VS《使命召唤》
    CSS中expression简介实现对象批量控制
    asp无组件上传文件超过200k就提示错误的解决方法
    IE和Firefox的js兼容性整理
    国外优秀的屏幕录象专家
    陆游和唐婉
    机器智能将会在2029年达到人类的水平
    WinXP中有趣的特殊文件夹
    二行代码解决全部网页木马(含iframe/script木马)
    Javascript 获取页面高度(多种浏览器)
  • 原文地址:https://www.cnblogs.com/Dm920/p/12461688.html
Copyright © 2011-2022 走看看