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();
}
}

原有文件

java基础48 IO流技术(序列流)       java基础48 IO流技术(序列流)

运行结果图

java基础48 IO流技术(序列流)      java基础48 IO流技术(序列流)

附录

 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();
}
}

运行结果图

java基础48 IO流技术(序列流)      java基础48 IO流技术(序列流)

原创作者:DSHORE

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

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

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

 
 
 
G
M
T
 
检测语言
世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
信德语
修纳语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
卢森堡语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
吉尔吉斯语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
夏威夷语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
库尔德语
弗里西语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
普什图语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
科萨
科西嘉语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苏格兰盖尔语
苗语
英语
荷兰语
菲律宾语
萨摩亚语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿姆哈拉语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
  世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
信德语
修纳语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
卢森堡语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
吉尔吉斯语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
夏威夷语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
库尔德语
弗里西语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
普什图语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
科萨
科西嘉语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苏格兰盖尔语
苗语
英语
荷兰语
菲律宾语
萨摩亚语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿姆哈拉语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
         
 
 
 
文本转语音功能仅限200个字符
 
  选项 : 历史 : 反馈 : Donate 关闭
上一篇:HTTP状态码的含义: 200:400:403:404:408:500:503:504


下一篇:opencv 车牌字符分割 ANN网络识别字符