Java PrintStream 打印流


打印流

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

1. PrintStream 类

  • 主要提供了一系列 print() 和 println(),可以将基本数据类型转换为字符串输出,当然也有其他的方法比如 printf() 方法
  • 对于基本类型 print() 和 println() 会先将它们转化为字符串的形式再输出,对于非基本数据类型的对象,print() 和 println() 会先调用对象的 toString() 方法,然后输出 toString() 返回的字符串;
  • println() = print("\n");
  • 之前用到的 System.out.println 中的 System.out 就是 PrintStream 类的一个实例对象;
  • java.io.PrintStream,详见:Class PrintStream
构造方法 说明
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) 无自动刷新行

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!!!
 */
发布了242 篇原创文章 · 获赞 244 · 访问量 9608

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104744641