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

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

 

基本安装 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… 有pagescomponents两个区域 双击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、付费专栏及课程。

余额充值