Java IO——PrintWriter与BufferedReader

 

java.io.PrintWriter具有自动刷新的缓冲字符输出流,特点是可以按行写出字符串,并且可以自动刷新.

PrintWriter没有对应的输入流,作为处理流使用时,PrintWriter既可以封装OutputStream类型字节流,还能够封装Writer类型的字符输出流并增强其功能,方法也从不抛出IOExcepiton

 * 注: java.io.BufferdWriter是缓冲字符输出流,内部有缓冲区可以进行块写操作,提高写作效率, 而PrintWeiter就是通过连接它实现的缓冲功能(PrintWriter的很多构造方法内部自动连接它);


 案例(1)

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

public class PWDemo {

    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
        /*
         * PrintWriter支持直接对文件进行读写操作。
         */
        PrintWriter pw=new PrintWriter("D:/pw.txt","UTF-8");
        pw.println("Are you OK");
        pw.println("I'm OK");
        System.out.println("写出完毕!");
        pw.close();
    }

}

案例(2)

package cn.sqq.layout;

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

public class PWDemo02 {

    public static void main(String[] args) throws IOException {
        // 创建文件输出流对象fos
        FileOutputStream fos=new FileOutputStream("fos.txt");

        //创建字符转换流对象osw,将字节流文件转换为字符流文件
        OutputStreamWriter osw=new OutputStreamWrit er(fos, "UTF-8");

       //创建缓冲字符流对象bw
        BufferedWriter bw=new BufferedWriter(osw);

       //创建PrintWriter对象pw

        PrintWriter pw=new PrintWriter(bw);

       //利用PrintWriter对象的println()方法写入一行字符
        pw.println("Are you Ok?");
        pw.print("I'm OK!");

        //关闭流
        fos.close();
        osw.close();
        bw.close();
        pw.close();
    }

}

BufferedReader是字符流的包装类,可以直接给它一个字符流对象来作为参数创建Buffered对象。

BufferedReader 带有默认的字符输入流,因为缓存是存在内存中的,而一般的读取是从硬盘中读取,从内存中读取数据速度要比直接从硬盘中读取快出很多倍,所以BufferedReader的效率要比普通字符流高处很多。

案例:利用BufferedReader读取当前文件字符

package cn.sqq.layout;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

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

        FileInputStream fis=new FileInputStream("src/cn/sqq/layout/BrDemo.java");
        //注意可能出现乱码,注意字符编码,默认的是GBK
        InputStreamReader isr=new InputStreamReader(fis);
        BufferedReader br=new BufferedReader(isr);
        /*
         * String readLine()
         * 连续读取若干字符,指导读取了换行符为止,然后,将换行符之前的所有字符
         * 组成一个字符串返回。
         * 注意:当读取到了末尾,则返回null
         */
        //String str=br.readLine();
        String str=null;
        while((str=br.readLine())!=null) {
            System.out.println(str);
        }
        br.close();
        isr.close();
        fis.close();
    }

}
 

你可能感兴趣的:(Java学习)