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