IO 流-字节流-字符流-缓冲流

来源:互联网 发布:linux 引导文件丢失 编辑:程序博客网 时间:2024/06/01 09:03

import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.FileReader;  
import java.io.FileWriter;   
  
//  字节流 :    FileOuputStream    FileInputStream  
//  字符流 :    FileWriter         FileReader  
//  缓冲流:    BufferedWriter      BufferedReader  
public class IO {  
    public static void main(String[] args){  
        fileReader();  
        /*fileOutputStream();
       bufferedWriter();
       bufferedReader();
       fileInputStream();*/
    }  
      
    //字节流   输出流  
    public static void fileOutputStream(){  
       File f = new File("e:\\text.txt");  //指定到支持的文件  
          
        try{  
            //文件不存在时创建  
            if(f.exists()==false){  
                f.createNewFile();  
            }  
            FileOutputStream fos = new FileOutputStream(f);  
            String str = "今天的天气很闷沉";  
            byte[] b = str.getBytes();  
            fos.write(b);  
            fos.close();  
        }catch(Exception ex){  
            ex.printStackTrace();  
       }     
    }  
      
    //字符流  输出流  
    public static void fileWriter(){  
        File f = new File("e:\\text.txt");  
        try{  
              
            if(f.exists()==false){  
                f.createNewFile();  
            }  
            FileWriter fw = new FileWriter(f,true); //true 表示不覆盖文件里面的内容  
            String str = "今天的天气很闷沉";  
            char[] ch = str.toCharArray();  
            fw.write("\r\n");   //写入换行  
            fw.write(ch);     
            fw.close();  
        }catch(Exception ex){  
            ex.printStackTrace();  
        }     
    }  
      
    // 缓冲流   输出流  
    public static void bufferedWriter(){  
        File f  = new File("e:\\text.txt");  
        try{  
              
            if(f.exists()==false){  
                f.createNewFile();  
            }  
            BufferedWriter bw = new BufferedWriter(new FileWriter(f,true)); // 以字符流的对象为参数  
              
            //缓冲流可以直接操作字符  
            bw.write("\r\n");  
            bw.write("天气不是很好!");  
              
            bw.close();  
        }catch(Exception ex){  
            ex.printStackTrace();  
       }     
    }  
     
    //字节流 输入流  
   public static void fileInputStream(){  
       File f  = new File("e:\\text.txt");  
        try{  
              
            if(f.exists()==false){  
                f.createNewFile();  
            }  
            FileInputStream fis = new FileInputStream(f);     
              
            // 字节数组的长度 ,由文件的字节大小  
           byte[] b = new byte[(int)f.length()];  
           fis.read(b);        //读入数据  
             
           String str = new String(b); //以字节数组构建字符串  
           fis.close();  
            System.out.println(str);  
       }catch(Exception ex){  
            ex.printStackTrace();  
        }     
    }  
      
    //字符流  输入流  
    public static void fileReader(){  
      File f = new File("e:\\text.txt");  
        try{  
           if(!f.exists()){  
                f.createNewFile();  
            }  
              
            FileReader fr = new FileReader(f);
            //BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in,"gb2312")); //设置输入接口按中文编码
            //BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out,"gb2312")); //设置输出接口按中文编码
              
            StringBuffer sb = new StringBuffer();
            char[] ch = new char[1000]; // 字符的长度未知  
            int hasRead = 0;  
            while((hasRead=fr.read(ch))>0){  
                sb.append(new String(ch,0,hasRead));  
            }     
              
           fr.close();  
           //String gb = new String(sb.toString().getBytes("ISO-8859-1"),"UTF-8");
            System.out.println(sb);  
        }catch(Exception ex){  
            ex.printStackTrace();  
        }  
    }  
 
    //缓冲刘 输入流  
    public static void bufferedReader(){  
        File f = new File("e:\\text.txt");  
        try{  
            if(!f.exists()){  
                f.createNewFile();  
            }  
            BufferedReader br  = new BufferedReader(new FileReader(f)); //字符流的对象构造  
              
            //每次读取文件的一行  
            StringBuffer sb = new StringBuffer();  
            while(br.ready()){  //是否有读取内容  
                sb.append(br.readLine());   //读取一行  
                sb.append("\r\n");      //换行  
            }  
            br.close();  
            System.out.println(sb);  
              
        }catch(Exception ex){  
            ex.printStackTrace();  
        }  
    }