----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
/*合并流:
对个源文件合并到一个文件中
构造方法:
Vector(Collection<? extends E> c)
构造一个包含指定 collection 中的元素的向量,
这些元素按其 collection 的迭代器返回元素的顺序排列。
SequenceInputStream(Enumeration<? extends InputStream> e)
通过记住参数来初始化新创建的 SequenceInputStream,
该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。
方法:
Enumeration <> elements()
返回此向量的组件的枚举。
*/
import java.util.*;
import java.io.*;
class SequenceDemo
{
public static void main(String[] args) throws IOException
{
//集合可以设置多个参数
Vector<FileInputStream> v=new Vector<FileInputStream>();
v.add(new FileInputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\合并流\\1.txt"));
v.add(new FileInputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\合并流\\2.txt"));
v.add(new FileInputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\合并流\\3.txt"));
Enumeration<FileInputStream> en=v.elements();
SequenceInputStream sis=new SequenceInputStream(en);//将三个集合对象放在一个源中
FileOutputStream fos=new FileOutputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\合并流\\4.txt");
byte[] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}
两个参数的,直接new两个对象就行了
FileInputStream fis1=new FileInputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\合并流\\1.txt");
FileInputStream fis2=new FileInputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\合并流\\2.txt");
SequenceInputStream sis=new SequenceInputStream(fis1,fis2);
FileOutputStream fos=new FileOutputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\合并流\\4.txt");
切割文件:讲一个问对象切割成多个文件,切割后合并,先编译splitFile方法,即先切割,在合并,这里合并用的ArrayList类,性能比Vector类高
import java.util.*;
import java.io.*;
class SplitDemo
{
public static void main(String[] args) throws IOException
{
//SplitFile();
SequenceFile();
}
public static void SequenceFile()throws IOException
{
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();//ArrayList效率比集合vetor要高些
for(int x=1;x<=3;x++)
{
al.add(new FileInputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\切割文件\\"+x+".part"));
}
final Iterator<FileInputStream> it=al.iterator();
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()//从内部类中访问局部变量it;需要被声明为最终类型
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
SequenceInputStream sis=new SequenceInputStream(en);//将三个集合对象放在一个源中
FileOutputStream fos=new FileOutputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\切割文件\\SequenceFile.pdf");
byte[] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
public static void SplitFile() throws IOException
{
FileInputStream fis=new FileInputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\切割文件\\03.pdf");
FileOutputStream fos=null;//创建对象的引用
byte[] buf=new byte[1024*1024];//建立起一个1M的缓存区,03.pdf文件大小为2.28 MB (2,398,408 字节),这里将其切成三段
int len=0;
int count=1;
while((len=fis.read(buf))!=-1)
{
fos=new FileOutputStream("D:\\TDDOWNLOAD\\javawork\\输入输出流\\切割文件\\"+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
分享到:
相关推荐
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马QT讲义,适合QT入门,使用,教程很比较基础,新手可以看看,另外视频链接在哔哩哔哩中。
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc
黑马程序员 - 毕向东 - Java基础教学 - 第02天 个人观看视频总结文档
黑马程序员-java32期培训视频(基础+就业)黑马程序员-java32期培训视频(基础+就业)
黑马程序员 - Java基础教学 - 04 - 数组、进制转换、二维数组
黑马程序员-梅兰商城项目实战,包含图片素材和编写源码。
黑马程序员 - 毕向东 - Java基础教学 - 第01天 个人观看视频总结文档
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 ...
C++黑马程序员-演讲比赛流程管理系统记录
黑马程序员 - Java基础教学 - 03 - 变量的作用域、for循环、break、continue、内存结构
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
黑马程序员--毕向东全套Java视屏,讲解的相当全面,各位如果需要,尽快下载哦! 另外如果视频链接存在打不开的问题,请留言,必定及时更新链接。
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490901
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490903
黑马程序员 - Java基础教学 - 06 - 面向对象(2) - 关于静态static的那些事.doc