十五、IO流

字节流的先输出后输入 (io流)

import java.io.*;
public class Helloworld1 {
 public static void main(String args[]) throws Exception {
    FileOutputStream fos = new FileOutputStream("d:/java/a.txt");    //new一个输出字节流对象,后面加上文件的路径
    FileInputStream fis = new FileInputStream("d:/java/a.txt");      //new一个输入字节流对象,从目标路径文件读到java内存
    fos.write('c');                                                  //字节流,不能输出中文
    int a = -1;                                                      //用a字母去循环输出,否则会跳跃性的读
    while((a=fis.read()) != -1) {
     char c = (char)a;
     System.out.print(c);
     }
    fos.close();                                                    //流用完之后必须得关闭
    fis.close();
  }
 }
....................................................................................................................................
字符流的先输出后输入  (io流)                 注意:当需要输入(fr)时,必须把输出(fw)关闭掉,否则输不进内容

import java.io.*;
public class Helloworld1 {
 public static void main(String args[]) throws Exception {
    Writer fw = new FileWriter("d:/java/a.txt");
    Reader fr = new FileReader("d:/java/a.txt"); 
    fw.write("中国人");                                           //字符流可以输出中文
    fw.close();                                        
    int a = -1;
    while((a=fr.read()) != -1) {
      char c = (char)a;
     System.out.print(c);
     }
 
    fr.close();
  }
 }
....................................................................................................................................
字节流的复制粘贴(先输入后输出)  (io流)           (字符流和字节流都可以实现复制粘贴,而且字节流可以操作中文)

import java.io.*;
public class Helloworld1 {
 public static void main(String args[]) throws Exception {
    FileOutputStream fos = new FileOutputStream("d:/java/b.txt");     //输出流,要粘贴的目标路径
    FileInputStream fis = new FileInputStream("d:/java/NO1.java");    //输入流,要复制的路径
    int a = -1;
    while((a=fis.read()) != -1) {
     char c = (char)a;
     fos.write(c);                                                  //读到一个字符后,变写到要输出流中
     }
    fos.close();
    fis.close();
  }
 }

字符流的复制粘贴(和字节流类似) 
import java.io.*;
public class Helloworld1 {
 public static void main(String args[]) throws Exception {
    Writer fw = new FileWriter("d:/java/b.txt");
    Reader fr = new FileReader("d:/java/NO1.java"); 
    int a = -1;
    while((a=fr.read()) != -1) {
      char c = (char)a;
      fw.write(c);
     }

    fw.close();
    fr.close();
  }
 } 
....................................................................................................................................
处理流(加上一个缓冲区)              (io流)

import java.io.*;
public class Helloworld1 {
 public static void main(String args[]) throws Exception {
    Writer fw = new FileWriter("d:/java/b.txt");
    BufferedWriter bw = new BufferedWriter(fw,8);                              //在节点流上面加上处理流
    bw.write("12");
    bw.flush();
    bw.close();
  }
 }
....................................................................................................................................
序列化和反序列化(把一个对象通过Object流写出去称之为序列化,利用Object流把写进来的内容直接封装成对象称之为反序列化)  (io流中的Object流)

import java.io.*;
public class Helloworld1 {
 public static void main(String args[]) throws Exception {
 Person p1 = new Person();
 p1.name = "arron";
 p1.lv = 14;
        p1.password = "123456";
 FileOutputStream fos = new FileOutputStream("d:/java/b.txt");     //输出流,要粘贴的目标路径
 ObjectOutputStream oos = new ObjectOutputStream(fos);
 oos.writeObject(p1);
 oos.close();
 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/java/b.txt"));
  Person p2 = (Person)ois.readObject();
  System.out.println(p2.lv);
  ois.close();
  }
 }
 class Person implements Serializable {                  //对象被序列化,就必须实现序列化接口
  String name;
  int lv;
                transient String password;                      //瞬时的(不保留)
  } 

posted @ 2012-07-17 23:43  建志  阅读(116)  评论(0)    收藏  举报