java 使用带有缓冲的字符流读写数据

来源:互联网 发布:逻辑回归算法详解 编辑:程序博客网 时间:2024/05/12 05:42

案例

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
public class RWByBufferCharStream {
 public static void main(String[] args) {
    /*
     * 数据的读 出
     */
    
    //File file = new File("1.txt");
    
    try {
     //传入一个文件字符流输入流
     FileInputStream fileInputStream  = new FileInputStream("1.txt");
        //将字符流转化为字节流
     FileOutputStream fileOutputStream = new FileOutputStream("i_newbuffer.txt");
     InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        //BufferedWriter bufferedWriter =  new BufferedWriter(outputStreamWriter);
       PrintWriter printWriter = new PrintWriter( outputStreamWriter,true);//使用这个类会有换行符出现
      
        String input;
        while((input=bufferedReader.readLine())!=null)//读取文件的一行数据
        {
         //bufferedWriter.write(input);// BufferedWriter bufferedWriter自带有缓冲区 只有当缓冲区写满后才写入硬盘这样  可以提高硬盘使用量,硬盘的寿命 整体写出时间变短
         printWriter.println(input);//输出有换行符的字符串
        }
        //读取一段缓存流后需要 写入到文件中
       //为了 保证缓冲区所有文件都输出 需要强制输出  printWriter.flush();
        printWriter.flush();
        printWriter.close();
        bufferedReader.close();
     
     outputStreamWriter.close();
     inputStreamReader.close();
     fileOutputStream.close();
     fileInputStream.close();
     System.out.println("文件拷贝完成");
     
    } catch (FileNotFoundException e) {
    
     e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  
 }


结果 如下:

文件拷贝完成