黑马程序员——SequenceInputStream流将分割后的文件进行合并
来源:互联网 发布:ios9越狱软件源 编辑:程序博客网 时间:2024/05/13 12:38
-------android培训、java培训、java学习型技术博客、期待与您交流! ----------
/*
此程序是将一个文件进行切割,切割没有对应的流,只能通过下面的代码来完成。然后通过SequenceInputStream流将分割后的文件进行合并。此程序的另外一个牛逼之处在于:
大家都知道,SequenceInputStream流的构造函数有两个:
1,只能接受两个字节输入流类型的参数。
2,能接收Enumeration类型的参数。如果我们确是要用到流比较多的话,就必须要用此构造函数。但是能创建
Enumeration(枚举)的集合只有Vector集合。但是Vector集合效率比较低,是安全的。
Enumeration的获取方式:
他是一个接口,并且是在Vector集合中以内部类的形式实现的。所以Enumeration对象的获取方式:
1.通过建立Vector集合调用elements()方法,来获取一个Enumeration对象
2.不用通过建立Vector集合来获取,可以在你的类中直接使用匿名内部类的方式将它实现了。
而此程序中正是建立了ArrayList集合,通过匿名内部类获得了Enumeration对象。
而且当内部类定义在局部时只能访问被final修饰的局部变量,即:让局部变量变成常量,它才能共享的到。
同样的道理Iterator肯定也能通过这个方法来获取。
*/
import java.io.*;
import java.util.*;
class SplitFile
{
public static void main(String[]args)throws IOException
{
//splitFile();
merge();
}
public static void splitFile()throws IOException
{
FileInputStream fis=new FileInputStream("f:/1.jpg");
FileOutputStream fos=null;
byte [] buf=new byte[1024*1024];
int len=0;
int count=1;
while((len=fis.read(buf))!=-1)
{
fos=new FileOutputStream("f:/splitfiles/"+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
public static void merge()throws IOException //merge:合并,融合
{
//因为创建Vector集合的效率比较低,所以创建ArrayList集合
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
for(int x=1;x<=4;x++)
{
al.add(new FileInputStream("f:/splitfiles/"+x+".part"));
}
final Iterator<FileInputStream> it=al.iterator();
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("f:/splitfiles/2.jpg");
byte [] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}
------- android培训、java培训、java学习型技术博客、期待与您交流! ----------
0 0
- 黑马程序员——SequenceInputStream流将分割后的文件进行合并
- 黑马程序员-SequenceInputStream文件合并-SplitFile文件分割
- 黑马程序员—io之File的合并(SequenceInputStream)与分割
- 黑马程序员——SequenceInputStream多输入流变单输入流操作,合并文件
- 文件的分割与合并SequenceInputStream
- 黑马程序员:合并流(序列流)的介绍:SequenceInputStream
- 将分割的文件进行合并
- 黑马程序员 IO流 文件的分割与合并
- 黑马程序员------ io流对一个图片文件进行分割与合并
- Java-使用IO流对大文件进行分割和分割后的合并
- Java-使用IO流对大文件进行分割和分割后的合并
- 黑马程序员-PrintWriter-序列流-分割文件-合并文件
- 黑马程序员—SequenceInputStream和Properties类
- 黑马程序员-学习日志-文件的分割与合并
- Java IO操作——合并流SequenceInputStream的使用
- Java的IO操作(四) - SequenceInputStream类,实例:一个文件分割、合并工具
- SequenceInputStream合并流的使用
- IO流--SequenceInputStream序列化流的应用--文件合并
- R数据导入读取read.table函数详解
- 谈谈自己对文件描述符的理解
- 二维数组和指针
- 机器学习之路
- 漫话Unity3D(三)
- 黑马程序员——SequenceInputStream流将分割后的文件进行合并
- 程序员的11个阶段
- 黑马程序员----------List三个子类的特点以及应用场景
- 爱情
- org.springframework.orm.hibernate3.LocalSessionFactoryBean not found
- [BASIC-16] 分解质因数
- zTree实现多选树
- 是否发生交换(2)
- OCP 1Z0 051 41