黑马程序员技术交流社区

标题: SequenceInputStream的问题。 [打印本页]

作者: 黑马戴帅军    时间: 2013-10-15 19:59
标题: SequenceInputStream的问题。
本帖最后由 黑马戴帅军 于 2013-10-16 11:43 编辑
  1. import java.io.FileInputStream;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.SequenceInputStream;
  5. import java.util.Enumeration;
  6. import java.util.Vector;

  7. public class SequenceInputStreamDemo {

  8.         public static void main(String[] args) throws IOException {

  9.                 /*
  10.                  * 需求:将1.txt 2.txt  3.txt文件中的数据合并到一个文件中。
  11.                  */
  12.                
  13.                 Vector<FileInputStream> v=new Vector<FileInputStream>();
  14.                
  15.                
  16.                 v.add(new FileInputStream("1.txt"));
  17.                 v.add(new FileInputStream("2.txt"));
  18.                 v.add(new FileInputStream("3.txt"));
  19.                
  20.                 Enumeration<FileInputStream> en =v.elements();
  21.                
  22.                 SequenceInputStream sis =new SequenceInputStream(en);
  23.                
  24.                 FileOutputStream fos =new FileOutputStream("4.txt");
  25.                
  26.                 byte [] buf =new byte[1024];
  27.                
  28.                 int len =0;
  29.                
  30.                 while((len=sis.read(buf))!=-1){
  31.                         
  32.                         
  33.                         fos.write(buf,0,len);
  34.                 }
  35.                
  36.                 fos.close();
  37.                 sis.close();        
  38.         }

  39. }
复制代码
这是毕老师课上讲的代码。但是我的演示结果和毕老师的不太一样。
我的演示结果是合并文件的时候,之间并没有换行。
请大家看看是什么问题。
还有就是Serializable这个方法,在什么时候使用?
tansient和static关键字如何区别?
作者: bird_not_fat    时间: 2013-10-15 20:30
1."我的演示结果是合并文件的时候,之间并没有换行。"其实是因为你每个文件的末尾没有换行导致的,SequenceInputStream在融合文件的时候是不会在每个文件的开头换行的。
2.Serializable不是方法是个接口,他是一个类可序列化的标识,当你要把堆内存中创建的对象保存起来的时候需要对类进行序列化操作,这个时候这个需要被序列化的类就要实现Serializable接口。
3.tansient是可以让不想序列化的字段不进行序列化,反序列化得到null值,静态方法存在于静态方法区内,而序列化只对堆内存中的数据进行,所以不会序列化静态的字段,这两个都可以防止序列化,一般而言tansient更常用。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2