.InputStream类

read()方法,逐字地以二进制的原始方法读取数据

public int read();                      //读入一个字节,-1表示无

public int read(bytr b[]);           //返回读入的字节数

2.OutputStream类

write()方法,是将字节写入流中

public void write (int b);           //将参数b的低位字节写入到输出流

public void write (byte b[]);      //将字节数组b中的全部字节顺序写入到输出流

Output的另外两个写法是flush()和close()

public void flush();               //刷新缓存,写入到文件

public void close();              //关闭流

3.Reader 类和Writer类

Reader类 : 输入流,读取的是字符(char)

Writer类 : 输出流,写入的是字符

public int read();                                      //将int类转换成char

public int read(char b[]);

public void write(int b);                          //将参数b的低两字节写入到输出流

public void write(char b[]);                     //将字符数组b的全部字节顺序写入到输出流

public void write(String s);                     //将字符串写入流中

4.标准输入和标准输出

System.in  为  InputStream类型

System.out  为  PrintStream类型

System.err  为  PrintStream类型

二进制流的读写:


import java.io.*;


public class Dump {

    public static void main(String[]args) {

        try

        {

            dump( new FileInputStream("aaa.bmp"),

                  new FileOutputStream("bbb.bmp"));

        }

        catch(FileNotFoundException fex)

        {

            fex.printStackTrace();

        }

        catch (IOException ioe)

        {

            ioe.printStackTrace();

        }

    }


    public static void dump(InputStream src, OutputStream dest)

    throws IOException

    {

        InputStream input = new BufferedInputStream(src);

        OutputStream output = new BufferedOutputStream(dest);

        byte[] data = new byte[1024];

        int length = -1;

        while ((length = input.read(data)) != -1) {

            output.write(data, 0, length);

        }

        input.close();

        output.close();

    }

}


字符的读写:


import java.io.*;

public class CopyFileAddLineNumber {

 public static void main (String[] args) {

  String infname = "CopyFileAddLineNumber.java";

  String outfname = "CopyFileAddLineNumber.txt";

  if( args.length >= 1 ) infname = args[0];

  if( args.length >= 2 ) outfname = args[1];


  try {

   File fin = new File(infname);

   File fout = new File(outfname);


   BufferedReader in = new BufferedReader(new FileReader(fin));

   PrintWriter out  = new PrintWriter(new FileWriter(fout));


   int cnt = 0; // 行号

   String s = in.readLine();

   while ( s != null ) {

    cnt ++;

    s = deleteComments(s);                                       //去掉以//开始的注释

    out.println(cnt + ": \t" + s );                                   //写出

    s = in.readLine();                                                  //读入

   }   

   in.close();                                                              // 关闭缓冲读入流及文件读入流的连接.

   out.close();

  } catch (FileNotFoundException e1) {

   System.err.println("File not found!" );

  } catch (IOException e2) {

   e2.printStackTrace();

  }

 }


 static String deleteComments( String s )                   //去掉以//开始的注释

 {

  if( s==null ) return s;

  int pos = s.indexOf( "//" );

  if( pos<0 ) return s;

  return s.substring( 0, pos );

 }

}


对象的读写:


import java.io.*;


class Person implements Serializable

{

 String name;

 int age;

 Person(String name, int age){

  this.name=name; this.age=age;

 }

 public String toString(){

  return name + "(" + age + ")";

 }

};

public class SerializeDemo {

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

  Person [] ps = { new Person("Li",18), new Person("Wang",19) };

  ObjectOutputStream output = new ObjectOutputStream( new FileOutputStream("s.temp") );

  for(Person p : ps) output.writeObject(p);

  output.close();


  ObjectInputStream input = new ObjectInputStream( new FileInputStream("s.temp") );

  Person p = null;

  try{

   while( (p=(Person)input.readObject()) != null ){

    System.out.println(p);

   }

  }catch(ClassNotFoundException ex){}

  catch(EOFException eofex){}

  input.close();

 }

}