标签:
查看各对象API文档
打印流
PrintWriter
PrintStream
序列流:对多个流进行排列合并
SequenceInputStream
1 public static void main(String[] args) throws IOException { 2 3 4 /* 5 * 需求:将1.txt 2.txt 3.txt文件中的数据合并到一个文件中。 6 */ 7 8 // Vector<FileInputStream> v = new Vector<FileInputStream>(); 9 // v.add(new FileInputStream("1.txt")); 10 // v.add(new FileInputStream("2.txt")); 11 // v.add(new FileInputStream("3.txt")); 12 // Enumeration<FileInputStream> en = v.elements(); 13 14 ArrayList<FileInputStream> al = new ArrayList<FileInputStream>(); 15 for(int x=1; x<=3; x++){ 16 al.add(new FileInputStream(x+".txt")); 17 } 18 19 Enumeration<FileInputStream> en = Collections.enumeration(al); 20 21 22 23 /* 24 final Iterator<FileInputStream> it = al.iterator(); 25 Enumeration<FileInputStream> en = new Enumeration<FileInputStream>(){ 26 27 @Override 28 public boolean hasMoreElements() { 29 30 return it.hasNext(); 31 } 32 33 @Override 34 public FileInputStream nextElement() { 35 36 return it.next(); 37 } 38 39 };*/ 40 41 SequenceInputStream sis = new SequenceInputStream(en); 42 43 FileOutputStream fos = new FileOutputStream("1234.txt"); 44 45 byte[] buf = new byte[1024]; 46 47 int len = 0; 48 49 while((len=sis.read(buf))!=-1){ 50 fos.write(buf,0,len); 51 } 52 53 fos.close(); 54 sis.close(); 55 56 }
操作对象的流:被操作的对象必须要序列化,即要实现Serializable接口(标记接口)
ObjectInputStream
ObjectOutputStream
transient:非静态的数据不想被序列化可以用这个关键字修饰、
RandomAccessFile类:随机访问文件,自身具有读写的方法。
它不是IO体系中的子类,父类是Object
特点:
1.该对象即能读,又能写,之前所学io对象一般只具备读或者写
2.该对象内部维护了一个byte数组,并通过指针可以操作数组中的元素
3.可以通过getFilePointer方法来获取指针的位置,和通过seek方法来设置指针的位置
4.其实该对象就是对字节输入流与字节输出流进行了封装。
5.该对象的源和目的只能是文件,通过构造函数可以看出。
管道流:输入和输出可以直接相连,通常结合线程使用。
PipedInputStream
PipedOutputStream
操作基本数据类型的流
DataInputStream
DataOutputStream
操作字节数组的流:源和目的都是内存
ByteArrayInputStream
ByteArrayOutputStream
操作字符数组的流
CharArrayInputStream
CharArrayOutputStream
操作字符串
StringRead
StringWriter
标签:
原文地址:http://www.cnblogs.com/lxboy2009/p/5926596.html