打印流-PrintStream和PrintWriter

IO包中的其他功能流对象
功能流对象
特点:解决问题的特有方法。

打印流--必须是输出流(两个都是)
PrintStream(字节流) PrintWriter(字符流)
特点:打印。不抛异常
打印的目的:File对象,字符串路径,字节输出流。


解决的问题:方便的打印各种数据的表示形式。
它的打印方法可以保证数值的表现形式不变。写的是什么样子,目的地就是什么样子

PrintWriter:一样具备打印功能。
目的:File对象,字符串路径,字节输出流,字符输出流。

PrintStream实例:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
    
public class PrintStreamDemo {

    public static void main(String[] args) throws IOException {
//        System.out.println("hello");
        
//        PrintStream ps = System.out;
//        ps.println("hello");
        
        File dir = new File("tempfile");
        if(!dir.exists()){
            dir.mkdir();
        }
        
        //演示PrintStream的特有方法。
        //1.创建PrintStream对象,目的就定位文件
        PrintStream out = new PrintStream("tempfile\print.txt");
        
//        out.write(353);//字节流的write方法一次只写出一个字节,也就是将一个整数的最低八位写出
        
//        out.write("353".getBytes());  麻烦
        
        out.print(353);//保证数值的表现形式。原理:write(String.valueOf(i));将数值转成字符串。
        
        out.close();
        
    }

}

PrintWriter实例:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class PrintWriterDemo {

    public static void main(String[] args) throws IOException {
        
        /*
         * 演示一个小例子
         * 读取键盘录入,将数据转成大写显示在屏幕上。
         */
        
        //1.键盘录入
        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
        
        //2.定义目的
        //BufferedWriter bufw = new BufferedWriter(new PrintStream(System.out));
        
        PrintWriter pw = new PrintWriter(System.out,true);//对println,printf,format方法自动刷新
        //字符流内部都有缓冲区
        
        //改变目的为文件,还想自动刷新。
        pw = new PrintWriter(new BufferedWriter(new FileWriter("tempfile\1.txt")),true);
        
        //3.读一行,写一行,键盘录入一定要定义结束标记
        String line = null;
        while((line=bufr.readLine())!=null){//readline是一个阻塞式方法
            if("over".equals(line))
                break;
            pw.println(line.toUpperCase());
//            pw.flush();//因为数据被临时缓存了
        }
        
        pw.close();//系统流关不关都可以
        bufr.close();//不需要关闭键盘录入这种标准输入流,一旦关闭,后面获取不到。
    }

}
原文地址:https://www.cnblogs.com/qjlbky/p/5911146.html