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是字符 ...
随机推荐
- UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举)
UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举) 题意分析 给出n*m的矩形格子,给出k个点,每个格子里面可以放一个点.现在要求格子的最外围一圈的每行每列,至少要放一个 ...
- 前端学习 -- Css -- 兄弟元素选择器
为一个元素后边的元素设置css样式: 语法:前一个 + 后一个. 作用:可以选中一个元素后紧挨着的指定的兄弟元素. 为一个元素后边的所有相同元素设置css样式: 语法:前一个 ~ 后边所有. < ...
- View的setLayerType() , setDrawingCacheEnabled() 方法用法
一.Android开发:用getDrawingCache方法获取ImageView中的图像需要注意的问题http://www.linuxidc.com/Linux/2011-09/43131.htm ...
- Android打包 & Gradle用法
Ref: Maven仓库上查插件最新版本号The Central Repository Search Enginehttp://search.maven.org/#search%7Cga%7C1%7C ...
- 丁酉年六月十一ACM模拟赛
似乎该写题解了.今天模拟ACM,10道题(本来还有2道被删了),9道都来自BZOJ,中间我做过2道.那么说,今天Solv.便大大增多了(但还是不如强大的Amphetamine). 题单及一句话题解如下 ...
- 哲学家问题(java)的三个解法
//加synchronize进行同步 //释放资源又很快获得自身的资源,这样不妥,吃完的话休息100ms //每个人先申请编号小的筷子 public class Philosopher impleme ...
- SpringBoot(十三):springboot 小技巧
原文出处: 纯洁的微笑 一些springboot小技巧.小知识点. 初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JD ...
- 很受欢迎的vue前端UI框架
最近在逛各大网站,论坛,SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,小编自己也趁着这个大前端的热潮,着手学习了一段时间的Vue.js,目前用它正在做自己 ...
- Shell记录-Shell脚本基础(四)
while循环,使您能够重复执行一组命令,直到某些条件发生.它通常用于当你需要反复操纵的变量值. 语法 while command do Statement(s) to be executed if ...
- codves 2021中庸之道
2021 中庸之道 http://codevs.cn/problem/2021/ 题目描述 Description 给定一个长度为N的序列,有Q次询问,每次询问区间[L,R]的中位数. 数据保证序列中 ...