超硬核详细学习系列——深入浅出IO的知识点,学习收藏必备

简介: 昨天我们对高级流中的转换流学习,而在IO流的整个大体系中,他还有一些高级流等待着我们来解锁。所以话不多说,今天我们先来学习其中一种高级流——打印流

I/O高级流

昨天我们对高级流中的转换流学习,而在IO流的整个大体系中,他还有一些高级流等待着我们来解锁。

所以话不多说,今天我们先来学习其中一种高级流——打印流

打印流

不知道大家有没有注意,我们平时我们在控制台打印输出,是调用print()方法和println()方法完成的,其实它们都来自于java.io.PrintStream类中,而这个类也是一个IO流,能够方便地打印各种数据类型的值,是一种便捷的输出方式。

分类

打印流只有输出流,分为:

  • 字节打印流:printStream。
  • 字符打印流:printWriter。 两者具体使用方法中,基本类似。

打印流的特点

  • 只操作目的地,不操作数据源。
  • 可以操作任意类型的数据。
  • 如果启用了自动刷新,在调用println()方法的时候,能够换行并刷新。
  • 可以直接操作文本文件。

PrintStream

1. 构造方法

  • public PrintStream(String fileName): 使用指定的文件名创建一个新的打印流。 构造举例,代码如下: PrintStream ps = new PrintStream("e:\demo\ps.txt"); 复制代码

2. 打印到文件

我们也经常看见System.out.println()这个打印到控制台就是printStream类型的,只不过它的流向是系统规定的,打印在控制台上。不过,既然是流对象,我们就可以玩另一个功能,将数据输出到指定文本文件中。

public class PrintStreamDemo {
    public static void main(String[] args) throws FileNotFoundException {
        // 调用系统的打印流,控制台直接输出97
        System.out.println(97);
        //创建打印流
        PrintStream ps = new PrintStream("e:\demo\ps.txt");
        // 设置系统的打印流流向,输出到ps.txt
        System.setOut(ps);
        // 调用系统的打印流,ps.txt中输出97
        System.out.println(97);
    }
}
复制代码

程序运行结果可以看到控制台只有打印一个97,那剩下一个97打印到哪里了呢,查看ps.txt文件,可以看到97打印到了文件中。

3. 复制文件案例

public class PrintStreamDemo2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("e:\demo\ps.txt"));
        PrintStream ps = new PrintStream("e:\democopy\psCopy.txt");
        String line;
        while ((line = br.readLine()) != null) {
            ps.println(line);
        }
        br.close();
        ps.close();
    }
}
复制代码

程序执行结果:

PrintWriter

1. 构造方法

  • public PrintWriter(String fileName): 使用指定的文件名创建一个新的打印流。 构造举例,代码如下: PrintWriter pw = new PrintWriter("e:\demo\pw.txt"); 复制代码

2. 复制文件案例

public class PrintWriterDemo {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("e:\demo\ps.txt"));
        PrintWriter pw = new PrintWriter("e:\democopy\pwCopy.txt");
        String line;
        while ((line = br.readLine()) != null) {
            pw.println(line);
        }
        br.close();
        pw.close();
    }
}
复制代码

程序执行结果:

标准输出流的本质

  • 输出语句的原理和如何使用字符流输出数据 直接看一段代码先: public class SystemOutDemo { public static void main(String[] args) { //在System类下有out对象,可以获取PrintStream输出流对象。 //public final static PrintStream out = null; System.out.println("helloworld");  //输出流对象 PrintStream ps = System.out; ps.println("helloworld"); } }  程序执行结果: 都打印在了控制台上: helloworld helloworld 复制代码
  • 本质: 在System类下有一个public final static PrintStream out = null这个静态对象,可以返回一个printStream对象。 所以输出语句其本质就是IO流操作,把数据输出到控制台上。

总结

相信各位看官都对IO流中高级流中的打印流类有了一定了解,期待等待下一章的高级流——序列化教学吧!

当然还有很多流等着下次一起看吧!

写到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!

感谢各位看到这里!愿你韶华不负,青春无悔!

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

相关文章
|
6月前
|
存储 Java 索引
Java学习—IO流
Java学习—IO流
|
6月前
|
存储 Java 数据安全/隐私保护
从零开始学习 Java:简单易懂的入门指南之IO字符流(三十一)
从零开始学习 Java:简单易懂的入门指南之IO字符流(三十一)
|
6月前
|
存储 移动开发 Java
从零开始学习 Java:简单易懂的入门指南之IO字节流(三十)
从零开始学习 Java:简单易懂的入门指南之IO字节流(三十)
|
6月前
|
存储 算法 Java
从零开始学习 Java:简单易懂的入门指南之IO序列化、打印流、压缩流(三十三)
从零开始学习 Java:简单易懂的入门指南之IO序列化、打印流、压缩流(三十三)
|
6月前
|
缓存 Java API
IO流【IO流技术介绍、 IO流的经典写法、 IO流新语法经典写法、Java中流的概念细分 】(一)-全面详解(学习总结---从入门到深化)
IO流【IO流技术介绍、 IO流的经典写法、 IO流新语法经典写法、Java中流的概念细分 】(一)-全面详解(学习总结---从入门到深化)
101 0
|
6月前
|
分布式计算 Java 大数据
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
98 0
|
6月前
|
存储 Java API
【JAVA学习之路 | 进阶篇】IO流及流的分类
【JAVA学习之路 | 进阶篇】IO流及流的分类
|
5月前
|
存储 算法 NoSQL
JAVA—IO流知识点总结
JAVA—IO流知识点总结
|
6月前
|
缓存 Java
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
81 0
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
|
6月前
|
存储 自然语言处理 Java
从零开始学习 Java:简单易懂的入门指南之IO缓冲流、转换流(三十二)
从零开始学习 Java:简单易懂的入门指南之IO缓冲流、转换流(三十二)