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);

    }

 

}