本文知识点目录:

1、SequenceInputStream序列流的步骤
    2、实例
    3、附录(音乐的切割与合并)



1、SequenceInputStream序列流的步骤

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

2、实例

  1 package com.dhb.file;
  2
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 import java.io.SequenceInputStream;
  8 import java.util.ArrayList;
  9 import java.util.Enumeration;
 10 import java.util.Vector;
 11
 12 /**
 13  * @author DSHORE / 2018-7-13
 14  *
 15  */
 16 /*
 17  * SequenceInputStream():序列流
 18  * */
 19 public class Demo21 {
 20
 21     public static void main(String[] args) throws IOException {
 22         meger1();//字节流
 23         meger2();//序列流
 24         meger3();//序列流
 25     }
 26
 27     //方式3:(序列流)把三个文件合成一个文件
 28     public static void meger3() throws IOException{
 29         //找到目标文件
 30         File file1 = new File("F:\\a.txt");
 31         File file2 = new File("F:\\b.txt");
 32         File file3 = new File("F:\\c.txt");
 33         File file4 = new File("F:\\d.txt");
 34         //建立数据输入输出通道
 35         FileOutputStream fos = new FileOutputStream(file4);
 36         FileInputStream fis1 = new FileInputStream(file1);
 37         FileInputStream fis2 = new FileInputStream(file2);
 38         FileInputStream fis3 = new FileInputStream(file3);
 39         //建立序列流
 40         Vector<FileInputStream> vector = new Vector<FileInputStream>();
 41         vector.add(fis1);
 42         vector.add(fis2);
 43         vector.add(fis3);
 44         Enumeration<FileInputStream> e = vector.elements();
 45         SequenceInputStream sequenceInputStream = new SequenceInputStream(e);
 46         //读取文件
 47         byte[] buf = new byte[1024];
 48         int length = 0;
 49         while((length = sequenceInputStream.read(buf)) != -1){
 50             fos.write(buf, 0, length);
 51         }
 52         //关闭资源
 53         sequenceInputStream.close();
 54         fos.close();
 55     }
 56
 57     //方式2:(序列流) 需求:使用SequenceInputStream序列流合并a.txt与b.txt文件的内容
 58     public static void meger2() throws IOException{
 59         //找到目标文件
 60         File file1 = new File("F:\\a.txt");
 61         File file2 = new File("F:\\b.txt");
 62         File file3 = new File("F:\\c.txt");
 63         //建立数据输入输出通道
 64         FileOutputStream fos = new FileOutputStream(file3);
 65         FileInputStream fis = new FileInputStream(file1);
 66         FileInputStream fis1 = new FileInputStream(file2);
 67         //建立我们的序列流对象
 68         SequenceInputStream sis = new SequenceInputStream(fis, fis1);
 69         byte[] buf = new byte[1024];
 70         int length = 0;
 71         while((length = sis.read(buf)) != -1){
 72             fos.write(buf, 0, length);
 73         }
 74         //关闭资源
 75         sis.close();
 76         fos.close();
 77     }
 78
 79     //方式1:(字节流) 需求:把a.txt与b.txt文件内容合并.
 80     public static void meger1() throws IOException{
 81         //找到目标文件
 82         File file1=new File("F:\\a.txt");
 83         File file2=new File("F:\\b.txt");
 84         File file3=new File("F:\\c.txt");
 85         //建立数据输入输出通道
 86         FileOutputStream fos=new FileOutputStream(file3);
 87         FileInputStream fis=new FileInputStream(file1);
 88         FileInputStream fis1=new FileInputStream(file2);
 89         //把输入流存储到集合中,然后在从集合中读取
 90         ArrayList<FileInputStream> list=new ArrayList<FileInputStream>();
 91         list.add(fis);
 92         list.add(fis1);
 93         //准备一个数组
 94         byte[] buf=new byte[1024];
 95         int length=0;
 96         for (int i = 0; i < list.size(); i++) {
 97             FileInputStream fileInputStream=list.get(i);
 98             while((length=fileInputStream.read(buf))!=-1){
 99                 fos.write(buf, 0, length);
100             }
101             //关闭资源
102             fileInputStream.close();
103         }
104         fos.close();
105     }
106 }

原有文件

       

运行结果图

      

附录

 1 package com.dhb.file;
 2
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.SequenceInputStream;
 8 import java.util.Enumeration;
 9 import java.util.Vector;
10
11 /**
12  * @author DSHORE / 2018-7-16
13  *
14  */
15 //需求:mp3音乐的切割与合并
16 public class Demo22 {
17     public static void main(String[] args) throws IOException {
18         cutFile();
19         //mergeFile();
20     }
21     //合并mp3
22     public static void mergeFile() throws IOException{
23         //找到目标文件
24         File dir = new File("E:\\MyMusic");
25         //通过目标文件找到所有mp3,然后把这些mp3添加到vector集合中
26         Vector<FileInputStream> vector = new Vector<FileInputStream>();
27         File[] file = dir.listFiles();
28         for (File file2 : file) {
29             if(file2.getName().endsWith(".mp3")){//获取以.mp3结尾的文件名
30                 vector.add(new FileInputStream(file2));//添加到vector集合中
31             }
32         }
33         Enumeration<FileInputStream> e = vector.elements();//返回此向量组件的枚举。即把上面集合中的元素给了e对象
34         SequenceInputStream sis = new SequenceInputStream(e);//建立序列流对象
35         //建立缓冲数组读取文件
36         byte[] buf = new byte[1024];
37         int length = 0;
38         FileOutputStream fos = new FileOutputStream(new File("MyMusic\\MergeMusic\\合并音乐-忘尘谷.mp3"));//建立输出字节流
39         while((length = sis.read(buf)) != -1){//读
40             fos.write(buf, 0, length);//写
41         }
42         fos.close();
43         sis.close();
44     }
45     //切割mp3
46     public static void cutFile() throws IOException{
47         File file = new File("E:\\Music\\忘尘谷.mp3");
48         //目标文件夹
49         File dir = new File("E:\\MyMusic");
50         //建立数据输入通道
51         FileInputStream fis = new FileInputStream(file);
52         //建立缓冲数组
53         byte[] buf = new byte[1024*1024];//1024*1024 = 1MB,即:把该音乐切割成每份1MB的大小
54         int length = 0;55       //边读边写
56         for (int i = 0; (length=fis.read(buf)) != -1; i++) {//读 (每次读1MB)
57             FileOutputStream fos = new FileOutputStream(new File(dir,"wcg"+i+".mp3"));//建立数据输出通道
58             fos.write(buf, 0, length);//写
59             fos.close();
60         }
61         fis.close();
62     }
63 }

运行结果图

      

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9306363.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

G
M
T

检测语言世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语信德语修纳语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利语南非祖鲁语卡纳达语卢森堡语印地语印尼巽他语印尼爪哇语印尼语古吉拉特语吉尔吉斯语哈萨克语土耳其语塔吉克语塞尔维亚语塞索托语夏威夷语威尔士语孟加拉语宿务语尼泊尔语巴斯克语布尔语(南非荷兰语)希伯来语希腊语库尔德语弗里西语德语意大利语意第绪语拉丁语拉脱维亚语挪威语捷克语斯洛伐克语斯洛文尼亚语斯瓦希里语旁遮普语日语普什图语格鲁吉亚语毛利语法语波兰语波斯尼亚语波斯语泰卢固语泰米尔语泰语海地克里奥尔语爱尔兰语爱沙尼亚语瑞典语白俄罗斯语科萨科西嘉语立陶宛语索马里语约鲁巴语缅甸语罗马尼亚语老挝语芬兰语苏格兰盖尔语苗语英语荷兰语菲律宾语萨摩亚语葡萄牙语蒙古语西班牙语豪萨语越南语阿塞拜疆语阿姆哈拉语阿尔巴尼亚语阿拉伯语韩语马其顿语马尔加什语马拉地语马拉雅拉姆语马来语马耳他语高棉语齐切瓦语   世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语信德语修纳语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利语南非祖鲁语卡纳达语卢森堡语印地语印尼巽他语印尼爪哇语印尼语古吉拉特语吉尔吉斯语哈萨克语土耳其语塔吉克语塞尔维亚语塞索托语夏威夷语威尔士语孟加拉语宿务语尼泊尔语巴斯克语布尔语(南非荷兰语)希伯来语希腊语库尔德语弗里西语德语意大利语意第绪语拉丁语拉脱维亚语挪威语捷克语斯洛伐克语斯洛文尼亚语斯瓦希里语旁遮普语日语普什图语格鲁吉亚语毛利语法语波兰语波斯尼亚语波斯语泰卢固语泰米尔语泰语海地克里奥尔语爱尔兰语爱沙尼亚语瑞典语白俄罗斯语科萨科西嘉语立陶宛语索马里语约鲁巴语缅甸语罗马尼亚语老挝语芬兰语苏格兰盖尔语苗语英语荷兰语菲律宾语萨摩亚语葡萄牙语蒙古语西班牙语豪萨语越南语阿塞拜疆语阿姆哈拉语阿尔巴尼亚语阿拉伯语韩语马其顿语马尔加什语马拉地语马拉雅拉姆语马来语马耳他语高棉语齐切瓦语          

文本转语音功能仅限200个字符
  选项 : 历史 : 反馈 : Donate 关闭

转载于:https://www.cnblogs.com/dshore123/p/9306363.html

java基础48 IO流技术(序列流)相关推荐

  1. 【Java基础】· IO流习题详解

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  2. Java基础学习—— IO流

    Java基础学习-- IO流 1 文件 1.1 文件的创建 1.2 文件常用的方法 2 IO流 2.1 FileInputStream 2.2 FileOutputStream 2.3 文件的拷贝 2 ...

  3. day22 Java学习 IO流(序列流)

    IO流(序列流) 序列流: * 可以把多个字节输入流整合成一个,从序列流中读取数据时,将从被整合的第一个流开始读,读完一个之后继续读第二个. 整合方式: * Seq uenceInputStream ...

  4. JAVASE基础模块三十三(Scanner 扫描流 RandomAccessFile随机访问流 ObjectInputStream序列流 Properties集合流 Sequence顺序流

    JAVASE基础模块三十三(Scanner 扫描流 RandomAccessFile随机访问流 ObjectInputStream序列流 Properties集合流 SequenceInputStre ...

  5. Java学习笔记(7)——Java基础之IO多线程网络思维导图

    Java面向对象学习笔记之:包括IO(字节流,字符流,节点流,处理流).线程(线程创建,线程控制,线程同步).网络(TCP Scoket,  UDP Scoket)(全屏观看Java学习笔记(7)-- ...

  6. Java基础之IO模型

    Java基础之IO模型 I/O 常见的IO模型 Java中3种常见的IO模型 BIO(Blocking I/O) NIO(Non-blocking/New I/O) AIO(Asynchronous ...

  7. Java基础IO流概述、字符流、字节流、流操作规律、File类、Properties类、打印流、序列流

    IO流:(Input Output)流 字符流的由来:其实就是字节流读取文字字节数据后,不直接操作而是先查指定的码表,获取对应的文字进行操作 简单说:字符流 = 字节流 + 编码表 字节流的两个顶层父 ...

  8. 【java基础,IO合集】文件流、高级流(缓冲流、对象流)、 序列化接口java.io.Serrializable

    目录 文件流 1 块读写的文件复制操作 2 文件输出流-覆盖模式 3 文件输出流-追加模式 4 文件输出流-读取文本数据 高级流 1  流连接示意图 2 缓冲流 2.1 使用缓冲流完成文件复制操作 2 ...

  9. JAVA File类、IO流体验与简介(字节流、字符流、序列流、打印流、编码、递归)

    1. File类 1.1. File类说明 存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永 久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中.这些文件可以移动 ...

最新文章

  1. 3d 自动生成物体_Adobe发布3D建模、AR内容生成应用Scantastic
  2. 用户界面设计的一些方法和基本原则
  3. java 通过id获取html代码_Maven私服安装配置,java通过私服下载代码,并打包后上传到私服(Nexus)...
  4. 阿里云rds升级mysql8_为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!...
  5. 执行一次怎么会写入两次数据_浅谈 Redis 数据持久化之 AOF 模式
  6. python如何导入numpy简书_如何使用python3.x成功导入numpy?
  7. wireshark抓包怎么找访问网址
  8. OpenShift 4 - Service Mesh使用入门
  9. 各大搜索引擎地址收录登记入口
  10. 小米、QQ等8款手机浏览器发布自查整改公告;AMD宣布收购赛灵思;​TypeScript 4.0.5发布|极客头条
  11. YIi2 Pjax简单使用
  12. 可变车道怎么走不违章_还记得这种车道怎么走吗?
  13. narwal无法连接机器人_知了连接型智能营销机器人——重新定义AI客服
  14. c语言头文件下载大全,求C语言头文件下载?
  15. 《宏命令完全指南》8.0最新修改篇
  16. win10如何在不同窗口切换
  17. 计算机系统盘怎么扩充,如何给电脑c盘扩容
  18. Juniper防火墙常用命令
  19. kernel - 制作linux开机logo
  20. uview中button细边框去除问题

热门文章

  1. arcgis server认证失败
  2. 信息安全快讯2017年8月第1期
  3. 动作识别、检测、分割、解析相关数据集介绍
  4. Debian设置root开机不用输密码自动登录
  5. win7点击计算机不现实光驱,Win7光驱读不出光盘的解决方法
  6. 怎么刷网站关键词流量​?
  7. 金融经济学(王江)期末梳理 第十三章 资本资产定价模型(CAPM)
  8. 20201104-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises07
  9. css分隔线中间带文字
  10. oracle执行存储过程06576,oracle的存储过程语法