java 21

打印流
  字节流打印流 PrintStream
  字符打印流 PrintWriter

打印流的特点:
  A:只有写数据的,没有读取数据。只能操作目的地,不能操作数据源。(只能写入数据到文件中,而不能从文件中提取数据)
  B:可以操作任意类型的数据。
  C:如果启动了自动刷新,能够自动刷新。
  D:该流是可以直接操作文本文件的。
 

哪些流对象是可以直接操作文本文件的呢?
     FileInputStream
     FileOutputStream
     FileReader
     FileWriter
     PrintStream
     PrintWriter
看API,查流对象的构造方法,如果同时有File类型和String类型的参数,一般来说就是可以直接操作文件的。

流如果按操作分:
     基本流:就是能够直接读写文件的
     高级流:在基本流基础上提供了一些其他的功能

作为Writer的子类使用:

 1     public static void main(String[] args) throws IOException {
 2         // 作为Writer的子类使用
 3         PrintWriter pw = new PrintWriter("pw.txt");
 4 
 5         pw.write("hello");
 6         pw.write("world");
 7         pw.write("java");
 8         
 9         pw.close();
10     }

打印流的特点:

  1:可以操作任意类型的数据。
     print()
     println()
   2:启动自动刷新
     PrintWriter pw = new PrintWriter(new FileWriter("pw2.txt"), true);
     还是应该调用println()的方法才可以
     这个时候不仅仅自动刷新了,还实现了数据的换行。

  这里的println()
       其实等价于于:
      bw.write();
      bw.newLine();
      bw.flush();

PrintWriter实现自动刷新和自动换行:

 1 public static void main(String[] args) throws IOException {
 2         // 创建打印流对象
 3         PrintWriter pw = new PrintWriter(new FileWriter("pw2.txt"), true);
 4 
 5         pw.println("hello");
 6         pw.println(true);
 7         pw.println(100);
 8 
 9         pw.close();
10     }

之前单纯用字符流来复制文本:

 1         // 封装数据源
 2          BufferedReader br = new BufferedReader(new FileReader(
 3         "DataStreamDemo.java"));
 4         //  封装目的地
 5          BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));
 6         
 7          String line = null;
 8          while ((line = br.readLine()) != null) {
 9          bw.write(line);
10          bw.newLine();
11          bw.flush();
12         }
13         
14          bw.close();
15          br.close();

使用打印流来改进之前的复制文本例子

 1     public static void main(String[] args) throws IOException {
 2             //封装数据源,文本文件,用字符流
 3             BufferedReader br = new BufferedReader(new FileReader("DataStreamDemo.java"));
 4             //封装目的地
 5             PrintWriter pw = new PrintWriter(new FileWriter("Copy.java"),true);
 6             //读取数据,并写入数据
 7             String line = null;
 8             while((line = br.readLine()) != null){
 9                 pw.println(line); //这里一句相当于以前3句
10             }
11             //释放资源
12             br.close();
13             pw.close();
14 
15     }
何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
原文地址:https://www.cnblogs.com/LZL-student/p/5928889.html