JavaSE——IO流6:高级流(字节打印流PrintStream、字符打印流PrintWriter)

一、打印流 

打印流不能读,只能写,所以打印流只有输出流,没有输入流。

二、字节打印输出流——PrintStream

public class PrintStreamDemo1 {
    public static void main(String[] args) throws FileNotFoundException {
        // 字节打印流
        PrintStream ps = new PrintStream(new FileOutputStream("chapter18\\src\\com\\testdemo\\myprintstream\\a.txt"), true, StandardCharsets.UTF_8);
//        PrintStream ps = new PrintStream(new FileOutputStream("chapter18\\src\\com\\testdemo\\myprintstream\\a.txt"), true, Charset.forName("UTF-8"));

        ps.println(97); // 写出 + 自动刷新 + 自动换行
        ps.print(true);
        ps.println();
        ps.printf("%s的售价是:%d磅%d便士", "衬衫", 9, 15);

        ps.close();
    }
}

运行结果:

三、字符打印输出流——PrintWriter

字符流底层有缓冲区,想要自动刷新需要开启。

public class PrintStreamDemo3 {
    public static void main(String[] args) throws IOException {
        PrintWriter pw = new PrintWriter(new FileWriter("chapter18\\src\\com\\testdemo\\myprintstream\\b.txt"), true);

        pw.println("早上好");
        pw.print(204887574L);
        pw.println();
        pw.printf("100的16进制数是:%x %n", 100);

        pw.close();
    }
}

运行结果:

四、System.out.println与打印流的关系

        System.out.println是将数据输出到控制台,打印流是将数据输出到文件中,System.out.println底层调用的就是打印流。

打印流的应用场景:

public class PrintStreamDemo4 {
    public static void main(String[] args) {
        // 获取打印流的对象,此打印流在虚拟机启动的时候,由虚拟机创建,默认指向控制台
        // 特殊的打印流,系统中的标准输出流,是不能关闭,在系统中是唯一的。
        PrintStream ps = System.out;

        // 调用打印流中的方法println
        // 写出数据,自动换行,自动刷新
        ps.println("123");

        // ps.close(); 关闭后,后面的内容无法打印

        ps.println("你好你好");
        System.out.println("456");
    }
}
public class PrintStreamAndWriter {
    public static void main(String[] args) throws IOException {
        // 字节打印输出流
        PrintStream printStream = new PrintStream("D:\\abc.txt", StandardCharsets.UTF_8);
        printStream.write("456".getBytes());
        printStream.print(true);
        printStream.println("出师表");
        printStream.printf("你好,我是%s,今年%d岁", "张三", 26);
        printStream.close();

        // 字符打印输出流
        PrintWriter printWriter = new PrintWriter(new FileWriter("D:\\abc.txt", Charset.forName("UTF-8"), true));
        printWriter.write("诸葛孔明");
        printWriter.print(false);
        printWriter.println(123);
        printWriter.printf("你好,我是%s,今年%d岁", "李四", 38);
        printWriter.close();

        // 读取文件写出的内容
        BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\\abc.txt"));
        String len;
        while ((len = bufferedReader.readLine()) != null) {
            System.out.println(len);
        }
        bufferedReader.close();
        
        /**
         * 456true出师表
         * 你好,我是张三,今年26岁诸葛孔明false123
         * 你好,我是李四,今年38岁
         */
    }
}

五、打印流的特点

打印流只能写,不能读

println方法都能同时实现写出数据+刷新+换行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值