Java 打印流 PrintStream 和 PrintWriter


打印流

  • OutputStream 类所提供的的 write() 方法只适用于输出字节数组,打印流解决了输出字符、数字、日期的问题;
  • 包括两种打印流:PrintStream(字节打印流)、PrintWriter(字符打印流);

1. PrintStream 类

  • 主要提供了一系列 print() 和 println() 方法(即平时我们在控制台打印输出的方法),可以将基本数据类型转换为字符串输出,当然也有其他的方法比如 printf() 方法
  • println() = print("\n");
  • 之前用到的 System.out.println 中的 System.out 就是 PrintStream 类的一个实例对象;
  • 对于基本类型 print() 和 println() 会先将它们转化为字符串的形式再输出,对于非基本数据类型的对象,print() 和 println() 会先调用对象的 toString() 方法,然后输出 toString() 返回的字符串。总之一句话:“看到即所得”;
  • java.io.PrintStream,详见:Class PrintStream

a. 构造方法

构造方法说明
PrintStream(OutputStream out)自动刷新行
PrintStream(OutputStream out, boolean autoflush)自动刷新行,autoflush 控制在遇到换行符(\n)时是否清空缓冲区
PrintStream(OutputStream out, boolean autoflush, String encoding)自动刷新行,encoding 指定编码方式
PrintStream(File file)无自动刷新行
PrintStream(File file, String csn)无自动刷新行,csn 是 charset(字符集)
PrintStream(String fileName)无自动刷新行
PrintStream(String fileName, String csn)无自动刷新行
  • 构造举例,代码如下:
    • PrintStream ps = new PrintStream("ps.txt");

b. 向屏幕和文件输出字符串

import java.io.IOException;
import java.io.PrintStream;

public class Test {
    public static void main(String[] args) throws IOException {
        // 调用系统的打印流,控制台直接输出97
        System.out.println(97);

        // 创建打印流,指定文件的名称
        PrintStream ps = new PrintStream("C:\\Users\\80626\\Desktop\\1.txt");

        // 设置系统的打印流流向,输出到ps.txt
        System.setOut(ps);
        // 调用系统的打印流,ps.txt中输出97
        System.out.println(97);
    }
}
/*
输出及文件
97
 */

2. PrintWriter 类

构造方法说明
PrintWriter(OutputStream out)无自动刷新行
PrintWriter(OutputStream out, boolean autoFlush)自动刷新行
PrintWriter(Writer out)无自动刷新行
PrintWriter(Writer out, boolean autoFlush)自动刷新行
PrintWriter(File file)无自动刷新行
PrintWriter(File file, String csn)无自动刷新行
PrintWriter(String fileName)无自动刷新行
PrintWriter(String fileName, String csn)无自动刷新行
  • PrintWriter 只有在 autoflush 模式下才会自动清空缓冲区;
  • 相对于 PrintStream,PrintWriter 最有利的是 println() 方法的行为:Windows 下的文本换行是 \r\n,而 Linux 下的文本换行是 \n,PrintWriter 的 println() 方法可以根据不同的操作系统生成相应的换行符;

a. 向屏幕输出

import java.io.PrintWriter;

public class Test {
    public static void main(String args[]) {
        PrintWriter out = null;
        // 通过System.out对PrintWriter实例化
        out = new PrintWriter(System.out);
        // 向屏幕上输出
        out.print("Hello World!");
        out.close();
    }
}
/*
输出
Hello World!
 */

b. 向文件输出

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Test {
    public static void main(String args[]) {
        PrintWriter out = null;
        File f = new File("C:\\Users\\80626\\Desktop\\1.txt");
        try {
            out = new PrintWriter(new FileWriter(f));
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 由FileWriter实例化,则向文件中输出
        out.print("Hello World!" + "\r\n");
        out.close();
    }
}
/*
文件
Hello World!!!
 */
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值