zoukankan      html  css  js  c++  java
  • 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的自学历程...只需坚持
  • 相关阅读:
    Bzoj 1878: [SDOI2009]HH的项链 莫队
    BZOJ 2140: 稳定婚姻 Tarjan Map
    Bzoj 2190 : [SDOI2008]仪仗队 数论 特判
    bzoj 16801740 : [Usaco2005 Mar]Yogurt factory 贪心 双倍经验
    BZOJ 5387: [Lydsy1806月赛]质数拆分
    BZOJ 1379: [Baltic2001]Postman 水题
    Bzoj : 1823: [JSOI2010]满汉全席
    4952: [Wf2017]Need for Speed 二分
    BZOJ 2301: [HAOI2011]Problem b 2045: 双亲数 同BZOJ 1101 Zap 莫比乌斯反演 3倍经验
    BZOJ 1030: [JSOI2007]文本生成器 AC自动机
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5928889.html
Copyright © 2011-2022 走看看