`
yjf997234900.
  • 浏览: 7544 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员-合并和切割文件

阅读更多

----------- 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学习型技术博客、期待与您交流! ------------

 

  • 03.rar (2.3 MB)
  • 下载次数: 0
分享到:
评论

相关推荐

    黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心

    黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心

    黑马程序员-SpringCloud-学习笔记01-认识微服务

    黑马程序员-SpringCloud-学习笔记01-认识微服务

    黑马程序员-Qt讲义.pdf

    Qt提供了基本的文件操作接口,支持二进制文件和文本文件的读写操作。Socket通信是网络编程中不可或缺的技术,Qt支持基于TCP/IP协议的客户端和服务器端编程,以及UDP通信和组播技术。 多线程是现代应用程序中用来...

    黑马程序员------类加载器学习注意点

    通过阅读《黑马程序员------类加载器学习注意点》这篇博文,以及对`classLoader.txt`文件的分析,我们可以更深入地掌握类加载器的相关知识,这对于解决实际问题和提升系统性能具有极大的帮助。在实践中不断探索和...

    黑马程序员-java32期培训视频(基础+就业)

    黑马程序员-java32期培训视频(基础+就业)黑马程序员-java32期培训视频(基础+就业)

    黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用

    黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用

    黑马程序员 - 毕向东 - Java基础教学 - 第02天

    黑马程序员 - 毕向东 - Java基础教学 - 第02天 个人观看视频总结文档

    黑马程序员---注解归纳

    同时,配合提供的`annotation.txt`文件,你可能能获取到更多关于注解的实际案例和示例代码,进一步巩固理论知识。 总的来说,注解是Java编程中不可或缺的一部分,熟练掌握注解的使用不仅能提高代码的可读性和可维护...

    黑马程序员 - 毕向东 - Java基础教学 - 第01天

    黑马程序员 - 毕向东 - Java基础教学 - 第01天 个人观看视频总结文档

    黑马程序员-Java语言进阶-源码、教程笔记.zip

    day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 ...

    黑马程序员-毕向东全套Java视屏

    黑马程序员--毕向东全套Java视屏,讲解的相当全面,各位如果需要,尽快下载哦! 另外如果视频链接存在打不开的问题,请留言,必定及时更新链接。

    黑马程序员-----javaBean的操作类学习笔记

    JavaBean操作类的学习是Java程序员必备的技能之一,它涉及属性设置、获取、事件处理等基本概念。以下是对JavaBean及其操作的详细解释: 1. **JavaBean规范**: - **命名规则**:通常,JavaBean的类名应该以"Bean...

    黑马程序员-tomcat集群部署文档资料

    总结,"黑马程序员-tomcat集群部署文档资料"涵盖的范围广泛,从基础的集群概念和原理,到具体的Tomcat集群配置和优化,再到高级的源码分析,对于希望提升服务器管理和运维能力的IT从业者来说是一份宝贵的参考资料。...

    黑马程序员-java多线程技术01

    本教程将聚焦于Java中的多线程技术,以“黑马程序员-java多线程技术01”为学习起点,探讨如何在Java中实现并管理线程。 首先,我们来理解什么是线程。线程是操作系统分配CPU时间的基本单元,一个进程中可以有多个...

    黑马程序员-------hash改变造成的内存泄露

    标题“黑马程序员------hash改变造成的内存泄露”提示我们,这个问题与哈希值的变化有关,这可能会导致程序无法正确地释放不再使用的内存,从而影响系统性能。下面我们将深入探讨这个话题。 哈希(Hash)通常指的是...

    黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc

    在《黑马程序员 - Java基础教学 - 05 - 面向对象(1)》文档中,详细讲解了面向对象的基本概念及其在Java中的应用。 ### 面向对象与面向过程 面向对象和面向过程都是解决问题的思维模式,但面向对象更注重将功能和...

    黑马程序员Qt全解教程.zip

    黑马程序员Qt入门教程的相关文档。1 Qt概述 3 1.1 什么是Qt 3 1.2 Qt的发展史 4 1.3 支持的平台 4 1.4 Qt版本 4 1.5 Qt的安装 5 Linux Host 5 OS X Host 5 Windows Host 5 1.6 Qt的优点 5 2 创建Qt项目 6 2.1 使用...

    黑马程序员----泛型学习注意点

    黑马程序员提供的这篇关于泛型的学习注意点,结合了源码分析和工具应用,旨在帮助开发者深入理解并有效运用泛型。下面将详细阐述泛型的主要知识点: 1. 泛型的基本概念: 泛型是Java SE 5.0引入的新特性,主要用于...

Global site tag (gtag.js) - Google Analytics