zoukankan      html  css  js  c++  java
  • PrintWriter中的write与println方法居然就是这些区别

    
    
    为什么循环中分别用write方法和println方法效果一样呢?
     1 import java.io.*;
     2 
     3 public class WriteLog {
     4 
     5     private  BufferedReader bfr;
     6     private  PrintWriter pw;
     7     private  String s=null;
     8 
     9 
    10     static  {
    11 
    12         System.out.println("输入任意字符:");
    13 
    14     }
    15 
    16      WriteLog() {
    17 
    18 
    19         bfr=new BufferedReader(new InputStreamReader(System.in));
    20      }
    21 
    22     public  void getWriteLog() throws IOException {
    23 
    24         this.pw=new PrintWriter(new File("D:\myRead","my2Text.txt"));
    25 
    26         while (!(s=bfr.readLine()).equals("quit#")) {
    27 
    28             pw.write(s);  //  
    29             pw.println(s);//
    30             pw.flush();
    31         }
    32 
    33         pw.close();
    34     }
    35 
    36     public  static  void main(String[] args)throws IOException {
    37 
    38      WriteLog wl=new WriteLog();
    39 
    40      wl.getWriteLog();
    41 
    42 
    43     }
    44 }

     PrintWriter在以下以pw代替,在上面的程序中,用pw.println(str)可以把数据发送到文件,而pw.write(str)也行,不过就是没有换行!难道他们就是这点差别吗?这点疑问要好好琢磨一下。
    查看源码发现:
        pw.println(str)方法是由write方法与println()方法组成,页println()方法中执行了newLine()方法。
       而 newLine()实现中有一条out.write(lineSeparator);
        即println(str)方法比write方法中多输出了一个lineSeparator行分隔符; 
       其中lineSeparator实现为;lineSeparator = (String) java.security.AccessController.doPrivileged(new sun.security.action.GetPropertyAction("line.separator"));
       而line.separator属性跟据每个系统又是不一样的。
       println()方法的注释说明中提到:
      
       ----------------

    上述引用重点在于不是简单的加上 之类的转义来替换 上述提到的lineSeparator。

    如果一定要用write(),就必须使用write()+println()的组合。

    当然给flush()的还是要flush.除非你在构造的时候就已经对autoFlush进行了初始化为true的操作

  • 相关阅读:
    Delphi的几个跨平台小游戏例子。
    Delphi判断某个类是否实现了某个接口
    Delphi RAD Server 应用服务基础平台
    Delphi XE10.1 引用计数
    运行Delphi XE10的MongoDB例程,测试Delphi插入记录性能
    在Windows下编译mongo-c-driver 1.3.x
    Delphi 高效读写锁
    Delphi XE10在 Android下调用静态库a文件
    Delphi 调试连接 任意Android手机/平板/盒子
    Some cool FireMonkey multi-device components
  • 原文地址:https://www.cnblogs.com/ltb6w/p/8151736.html
Copyright © 2011-2022 走看看