IO中按照數據流的方向不同可以分為輸入流和輸出流(以程序的角度來考慮)

按照數據單位的不同可以分為字節流和字符流。

按照功能的不同可以分為節點流和處理流。

 

J2SDK所提供的所有流類型位于包java.io內斗分別繼承自以下四種抽象流類型

 

字節流

字符流

輸入流

InputStream

Reader

輸出流

OutputStream

Writer

 

1 FileOutputStream  文件字節流

示例代碼:

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStream;

 

public class Demo10 {

    //向文件中寫入字符串

    public static void main(String[] args){

       //使用File類找到文件

       //例如現在要在demo.txt文件中保存數據

       File f=new File("e:\\demo.txt");

       //向文件中寫入數據,肯定要使用輸出流————OutputStream

       OutputStream out=null;

       //需要通過其子類進行實例化

       try{

           out=new FileOutputStream(f);

       }catch(Exception e){}

       //向文件中寫入數據

       String str="Hello World";

       byte b[]=str.getBytes();

       //向文件中寫入內容

       try{

           out.write(b);

       }catch(Exception e){}

       //關閉文件

       try{

           out.close();

       }catch(Exception e){}

      

    }

}

 

2 FileReader 文件字符流

示例代碼:

import java.io.File;

import java.io.FileReader;

import java.io.Reader;

 

public class Demo13 {

 

   

    public static void main(String[] args) {

       // TODO Auto-generated method stub

 

       File f=new File("f:\\demo.txt");

        Reader r=null;

       try{

           r=new FileReader(f);

       }catch(Exception e){}

       char c[]=new char[1024];

       int count=0;

       try{

           count=r.read(c);

       }catch(Exception e){}

       //要把讀入的內容輸出

       System.out.println(new String(c,0,count));

    }

}

3 FileInputStream  文件字節流

示例代碼:

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

 

public class Demo11 {

 

    public static void main(String[] args) {

      

       File f=new File("e:\\demo.txt");

       InputStream input=null;

       try{

           input=new FileInputStream(f);

       }catch(Exception e){}

       byte b[]=new byte[1024];

       int x=0;

       int count=0;

       for(int i=0;i<b.length;i++){

 

       try{

           if((x=input.read())!=-1)

           {

              b[i]=(byte)x;

           }else{

              break;

           }

       }catch(Exception e){}

       }

       try{

           input.close();

       }catch(Exception e){}

       //要把讀入的內容輸出

       System.out.println(new String(b));

    }

 

    }

4 FileWriter  文件字符流
示例代碼:

import java.io.File;

import java.io.FileWriter;

 

public class Demo14 {

 

   

    public static void main(String[] args) {

      

       File f=new File("e:\\demo.txt");

       FileWriter out=null;

       try{

           out=new FileWriter(f);

       }catch(Exception e){}

       try{

           out.write("Hello World---");

       }catch(Exception e){}

       //現在文件輸出流并沒有關閉

       try{

           out.flush();

       }catch(Exception e){}

       try{

           out.close();

       }catch(Exception e){}

    }

 

}

補充:對于輸出的緩沖流,寫出的數據會先在內存中緩存,使用flush方法將會使內存中的數據立刻寫出。

5 BufferedReader 字符流

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

 

public class Demo05 {

 

   

    public static void main(String[] args) {

 

 

       BufferedReader buf=null;

       //將字節的輸入流量變為字符流,之后放入緩沖之后

       buf=new BufferedReader(new InputStreamReader(System.in));

       //緩沖每次讀一行

       String str=null;

       System.out.print("請輸入內容:");

       try{

           str=buf.readLine();

           buf.close();

       }catch(Exception e){}

       System.out.print("輸入內容:"+str);

    }

 

}