“这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战”
茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!
愿你在未来的日子,保持热爱,奔赴山海!
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流中高级流中的打印流类有了一定了解,期待等待下一章的高级流——序列化教学吧!
当然还有很多流等着下次一起看吧!欢迎期待下一章的到来!
学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!
感谢各位看到这里!愿你韶华不负,青春无悔!
注: 如果文章有任何错误和建议,请各位大佬尽情留言!如果这篇文章对你也有所帮助,希望可爱亲切的您给个三连关注下,非常感谢啦!