PrintWriter

PrintWriter的使用
java.io.PrintWriter

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

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

PW支持两个直接对文件写操作的构造方法:

  • PrintWriter(File f)传文件名
  • PrintWriter(String s)传路径

以上两种方法都支持一个重载,就是再传入一个参数

  • 允许我们制定写出字符时的字符集。
  • PrintWriter给人一种可以直接对文件进行操作的假象
  • PW是一个高级流
  • 实际上PW包装了字节流、字符流和字符缓冲流。
  • PW负责自动行刷新
  • bw负责提高效率
  • osw负责读字符
  • fos负责写字节
  • 最后PW能够按行很快地把一个字符串变成字节写在文件中

代码展示如下所示:

 
import java.io.IOException;
import java.io.PrintWriter;
 
/**
* java.io.PrintWriter
* 具有自动行
* @author 小明
*
*/
public class PWDemo {
 
public static void main(String[] args) throws IOException {
/**
* PW支持两个直接对文件写操作的构造方法:
* PrintWriter(File f)传文件名
* PrintWriter(String s)传路径
* PrintWriter给人一种可以直接对文件进行操作的假象
* PW是一个高级流
* 实际上PW包装了字节流、字符流和字符缓冲流。
* PW负责自动行刷新
* bw负责提高效率
* osw负责读字符
* fos负责写字节
* 最后PW能够按行很快地把一个字符串变成字节写在文件中
*/
 
PrintWriter pw = new PrintWriter("pw.txt");
 
pw.println("飞雪连天射白鹿");
pw.println("金庸小说我都爱看");
System.out.println("写出完毕!");
pw.close();
}
}
 
 
 
 
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
 
public class PWDemo2 {
 
public static void main(String[] args) throws IOException {
/**
* 使用流连接形式向文件中写出字符串
*/
//    FileOutputStream fos = new FileOutputStream("pw2.txt");
//    
//    OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
//    
//    BufferedWriter bw = new BufferedWriter(osw);
//    
//    PrintWriter pw = new PrintWriter(bw);
 
PrintWriter pw = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("pw2.txt")
, "UTF-8")
)
);
 
pw.println("你好");
pw.println("我不好");
pw.close();
 
}
 
}
 
 
缓冲字符流中所有构造方法中第一个参数都是ReaderWriter对象。
 
代码展示如下所示:
PrintWriter创建时如果有参数true时,会有行刷新。PrintWriter调用println()方法有行刷新。
 
当创建PW时第一个参数为一个流时,
* 那么久可以再传入一个boolean值类型的参数,
* 若该值为true,那么当前PW久具有自动行刷新的功能,
* 即:每当使用println方法写出一行字符串后就会自动调用flush
* 注:使用自动行刷新可以提高写出数据的即时性,
* 但是由于会提高写出次数,必然会导致写效率降低。
 
 
 
package io;
 
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;
 
/**
* 完成简易记事本功能
* 程序启动后要求输入文件名,然后对该文件写操作。
* 之后输入的每一行字符串都按行写入到该文件中。
* 当输入“exit"是程序退出。
* 
* 使用PW完成该功能,并且自行使用流连接完成。
* 
* @author 小明
*
*/
public class Note {
public static void main(String[] args) throws IOException, FileNotFoundException{
Scanner reader = new Scanner(System.in);
System.out.println("请输入文件名:");
String filename = reader.nextLine();
 
PrintWriter pw = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(filename),"UTF-8"
)
),true
);
System.out.println("请开始输入内容");
while(true)
{
String line = reader.nextLine();
/**
* 当创建PW时第一个参数为一个流时,
* 那么久可以再传入一个boolean值类型的参数,
* 若该值为true,那么当前PW久具有自动行刷新的功能,
* 即:每当使用println方法写出一行字符串后就会自动调用flush
* 注:使用自动行刷新可以提高写出数据的即时性,
* 但是由于会提高写出次数,必然会导致写效率降低。
*/
if("exit".equals(line))
{
break;
}
//pw.write(line);
pw.println(line);
//pw.flush();
}
pw.close();
System.out.println("谢谢输入");
}
 
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值