java基础48 IO流技术(序列流)
本文知识点目录:
1、SequenceInputStream序列流的步骤
2、实例
3、附录(音乐的切割与合并)
1、SequenceInputStream序列流的步骤
1.找到目标文件
2.建立数据输入输出通道
3.建立序列流对象
4.关闭资源
2、实例
package com.dhb.file; 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; /**
* @author DSHORE / 2018-7-13
*
*/
/*
* SequenceInputStream():序列流
* */
public class Demo21 { public static void main(String[] args) throws IOException {
meger1();//字节流
meger2();//序列流
meger3();//序列流
} //方式3:(序列流)把三个文件合成一个文件
public static void meger3() 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 fos = new FileOutputStream(file4);
FileInputStream fis1 = new FileInputStream(file1);
FileInputStream fis2 = new FileInputStream(file2);
FileInputStream fis3 = new FileInputStream(file3);
//建立序列流
Vector<FileInputStream> vector = new Vector<FileInputStream>();
vector.add(fis1);
vector.add(fis2);
vector.add(fis3);
Enumeration<FileInputStream> e = vector.elements();
SequenceInputStream sequenceInputStream = new SequenceInputStream(e);
//读取文件
byte[] buf = new byte[];
int length = ;
while((length = sequenceInputStream.read(buf)) != -){
fos.write(buf, , length);
}
//关闭资源
sequenceInputStream.close();
fos.close();
} //方式2:(序列流) 需求:使用SequenceInputStream序列流合并a.txt与b.txt文件的内容
public static void meger2() throws IOException{
//找到目标文件
File file1 = new File("F:\\a.txt");
File file2 = new File("F:\\b.txt");
File file3 = new File("F:\\c.txt");
//建立数据输入输出通道
FileOutputStream fos = new FileOutputStream(file3);
FileInputStream fis = new FileInputStream(file1);
FileInputStream fis1 = new FileInputStream(file2);
//建立我们的序列流对象
SequenceInputStream sis = new SequenceInputStream(fis, fis1);
byte[] buf = new byte[];
int length = ;
while((length = sis.read(buf)) != -){
fos.write(buf, , length);
}
//关闭资源
sis.close();
fos.close();
} //方式1:(字节流) 需求:把a.txt与b.txt文件内容合并.
public static void meger1() throws IOException{
//找到目标文件
File file1=new File("F:\\a.txt");
File file2=new File("F:\\b.txt");
File file3=new File("F:\\c.txt");
//建立数据输入输出通道
FileOutputStream fos=new FileOutputStream(file3);
FileInputStream fis=new FileInputStream(file1);
FileInputStream fis1=new FileInputStream(file2);
//把输入流存储到集合中,然后在从集合中读取
ArrayList<FileInputStream> list=new ArrayList<FileInputStream>();
list.add(fis);
list.add(fis1);
//准备一个数组
byte[] buf=new byte[];
int length=;
for (int i = ; i < list.size(); i++) {
FileInputStream fileInputStream=list.get(i);
while((length=fileInputStream.read(buf))!=-){
fos.write(buf, , length);
}
//关闭资源
fileInputStream.close();
}
fos.close();
}
}
原有文件

运行结果图

附录
package com.dhb.file; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector; /**
* @author DSHORE / 2018-7-16
*
*/
//需求:mp3音乐的切割与合并
public class Demo22 {
public static void main(String[] args) throws IOException {
cutFile();
//mergeFile();
}
//合并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[];
int length = ;
FileOutputStream fos = new FileOutputStream(new File("MyMusic\\MergeMusic\\合并音乐-忘尘谷.mp3"));//建立输出字节流
while((length = sis.read(buf)) != -){//读
fos.write(buf, , length);//写
}
fos.close();
sis.close();
}
//切割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 = 1MB,即:把该音乐切割成每份1MB的大小
int length = ;
//边读边写
for (int i = ; (length=fis.read(buf)) != -; i++) {//读 (每次读1MB)
FileOutputStream fos = new FileOutputStream(new File(dir,"wcg"+i+".mp3"));//建立数据输出通道
fos.write(buf, , length);//写
fos.close();
}
fis.close();
}
}
运行结果图

|
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/9306363.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
|
检测语言 世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 信德语 修纳语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 卢森堡语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 吉尔吉斯语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 夏威夷语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 库尔德语 弗里西语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 普什图语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 科萨 科西嘉语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苏格兰盖尔语 苗语 英语 荷兰语 菲律宾语 萨摩亚语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿姆哈拉语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 |
世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 信德语 修纳语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 卢森堡语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 吉尔吉斯语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 夏威夷语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 库尔德语 弗里西语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 普什图语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 科萨 科西嘉语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苏格兰盖尔语 苗语 英语 荷兰语 菲律宾语 萨摩亚语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿姆哈拉语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 |
java基础48 IO流技术(序列流)的更多相关文章
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- java基础之IO流(一)字节流
java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
- Java基础之IO流整理
Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...
- java基础篇---I/O技术(三)
接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
第一讲 File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...
- java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理
一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...
- java基础43 IO流技术(输入字节流/缓冲输入字节流)
通过File对象可以读取文件或者文件夹的属性数据,如果要读取文件的内容数据,那么我们就要使用IO技术. 一.输入字节流 输入字节流的体系: -------| InputStream:所有输入字节流的 ...
- java基础53 IO流技术(转换流)
1.转换流 1.输入字节的转换流:InputStreamReader是字节流转为字符流的桥梁,可以把输入字节流转换为输入字符流 2.输出字节流的转换流:OutputStreamWriter是字符 ...
随机推荐
- redis动态扩展内存
需求:将redis内存从1G扩展到3G,不中断服务 1.打开客户端 # redis-cli -p 6391 2.查看当前值 redis 127.0.0.1:6391> config get ma ...
- Eclipse – Java.Lang.OutOfMemoryError: Java Heap Space(转)
In Eclipse IDE, if your program is consuming a lot of memory (loading big data) like this : List< ...
- 解题:JSOI 2016 最佳团体
题面 0/1分数规划+树形背包检查 要求$\frac{\sum P_i}{\sum S_i}的最大值,$按照0/1分数规划的做法,二分一个mid之后把式子化成$\sum P_i=\sum S_i*mi ...
- 【THUSC2017】座位
题目背景 班级聚会的时候,班主任为了方便管理,规定吃饭的时候同一个寝室的同学必须坐在一起;但是吃完饭后,到了娱乐时间,喜欢不同游戏的同学会聚到一起;在这个过程中就涉及到了座位分配的问题. 题目描述 有 ...
- MySQL 第二篇:库操作
一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...
- eclipse安装activiti5.18.0工作流插件 以及安装过程中activiti插件出现的问题及解决
转: eclipse安装activiti5.18.0工作流插件 以及安装过程中activiti插件出现的问题及解决 2017年05月04日 18:44:21 JJ_nan 阅读数:2773 版权声 ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...
- lumen passport Call to undefined method Laravel\Lumen\Application::group()
解决方法:https://github.com/dusterio/lumen-passport/issues/69 public function boot() { LumenPassport::ro ...
- 题解【51nod 1290 Counting Diff Pairs】
Description 求区间内有多少对 \((i,j)\) 满足 \(|a_i - a_j| \leq k\) Solution 可以莫队做(万能的莫队) 只需要考虑加入一个数会产生多少贡献即可 离 ...
- P3130 [USACO15DEC]计数haybalesCounting Haybales
P3130 [USACO15DEC]计数haybalesCounting Haybales 1)给定一段连续的田地,给每一个田地都增加一些新的草包. 2)给定一段连续的田地,找出草包最少的田地有多少草 ...