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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基本安装 1、对于单个控件,Componet-->install component..-->PAS或DCU文件-->install; 2、对于带*.dpk文件的控件包,File-->Open(下拉列表框中选*.dpk)-->install即可; 3、对于带*.bpl文件的控件包,Install Packages-->Add-->bpl文件名即可; 4、如果以上Install按钮为失效的话,试试Compile按钮; 5、是run time lib则在option下的packages下的runtimepackes加之。 如果编译时提示文件找不到的话,一般是控件的安装目录不在Delphi的Lib目录中,有两种方法可以解决: 1、反安装的源文件拷入到Delphi的Lib目录下; 2、或者Tools-->Environment Options中把控件源代码路径加入到Delphi的Lib目录中即可。 注意:所安装的控件是否与你所用的Delphi版本相适应。 RxLib的安装   首先在Delphi 5 的 IDE 中将以前版本的 Rxlib 反安装掉,删除 RXCTL5.BPL、RXDB5.BPL、 RXBDE5.BPL、DCLRX5.BPL、 DCLRXDB5.BPL 和DCLRXBD5.BPL。   打开 Rx 的运行包 RXCTL5.DPK,在 Package 窗口中按 Compile 按钮编译 RXCTL5.DPK ,然后用同样方法编译另两个运行包RXDB5.DPK 和 RXBDE5.DPK ,将编译后的三个 BPL 文件放到搜索路径中,如 WINDOWS\SYSTEM等。   在编译完运行包后你必须将 RX 的设计期包安装到 IDE 环境中。   打开 Rx 的设计期包 DCLRX5.DPK,在 Package 窗口中按 Compile 按钮编译,然后按 Install按钮将设计期包注册到组件面板中。用同样的方法安装 DCLRXDB5.DPK 和 DCLRXBD5.DPK。   注意:不要在 Delphi IDE 中保存包资源(package sources)! 控件删除 在Component/Install Packages中删除。 选Component/configure Palette… 有pages和components两个区域 双击components区域,选中要删除得控件,下面有得Delete按钮 但系统提供的控件只能Hide,不能delete。 打开控件所在的包文件(*.dpk),从中删除控件那个文件,再重新编译该包即可 如果是整个控件包都要删除的话,project->Option->Packages,删掉那个packages,That would be ok~

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值