为什么循环中分别用write方法和println方法效果一样呢?
 import java.io.*;

 public class WriteLog {

     private  BufferedReader bfr;
private PrintWriter pw;
private String s=null; static { System.out.println("输入任意字符:"); } WriteLog() { bfr=new BufferedReader(new InputStreamReader(System.in));
} public void getWriteLog() throws IOException { this.pw=new PrintWriter(new File("D:\\myRead","my2Text.txt")); while (!(s=bfr.readLine()).equals("quit#")) { pw.write(s); //
pw.println(s);//
pw.flush();
} pw.close();
} public static void main(String[] args)throws IOException { WriteLog wl=new WriteLog(); wl.getWriteLog(); }
}

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()方法的注释说明中提到:
  
   ----------------

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

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

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

PrintWriter中的write与println方法居然就是这些区别的更多相关文章

  1. http中get,post,put,delete方法的用法以及区别

    http协议是一种在网络中进行文件传送遵循的协议.一种无状态的协议.http协议服务器端不跟浏览器端建立长久的通信连接. 建立http通信之后,服务端将文件内容传送给浏览器端接收就完成一次请求.当然一 ...

  2. JAVA printWriter中write()和println()区别

    PrintWriter 的Write()方法和println()方法有何细微的区别? 最近学习JAVA网络编程,在服务器端和客户端产生一个Socket 后, 两边各自用getIputStream()和 ...

  3. 转:PrintWriter中write与println方法的区别

    原文地址:https://blog.csdn.net/qq_25610165/article/details/57083118 自己遇到的问题是:刚开始学 socket 通讯, 代码运行是好着的,后来 ...

  4. jQuery中ajax请求的六种方法(三、四):$.getJSON()方法

    4.$.getJSON()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  5. jQuery中ajax请求的六种方法(三、三):$.post()方法

    3.$.post()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  6. jQuery中ajax请求的六种方法(三、二):$.get()方法

    2.$.get()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  7. jQuery中ajax请求的六种方法(三、一):$.ajax()方法

    1.基础的$.ajax()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  8. Java 中extends与implements使用方法

    Java 中extends与implements使用方法 标签: javaclassinterfacestring语言c 2011-04-14 14:57 33314人阅读 评论(7) 收藏 举报 分 ...

  9. Java中的equals和hashCode方法

    本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要 ...

随机推荐

  1. win7快捷方式图标修复

    test.bat ///////////////////////////////////////////////////////////////////////// rem 关闭Windows外壳程序 ...

  2. bootstrap 4 pull-right无效

    /********************************************************************** * bootstrap 4 pull-right无效 * ...

  3. MySQL中的存储过程和函数使用详解

    一.对待存储过程和函数的态度 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在MySQL中的存储过程移植到sqlsever上就不一定可以用了. 2.调试麻烦,在db中报一个错误和在 ...

  4. opencv的DMatch

    1.DMatch是描述图像匹配信息的类 /** @brief Class for matching keypoint descriptors query descriptor index, train ...

  5. D:\yyy\UNetSegmentation_code_20180301\data\train

    key1 numpy.save("filename.npy",a) 利用这种方法,保存文件的后缀名字一定会被置为.npy,这种格式最好只用 numpy.load("fil ...

  6. 20155208 2006-2007-2 《Java程序设计》第1周学习总结

    20155208徐子涵 2016-2017-2 <Java程序设计>第1周学习总结 教材学习内容总结 浏览教材 每章提出自己存在的问题 chapter1:JDK和JRE的区别体现在什么地方 ...

  7. C++学习(十二)(C语言部分)之 循环

    上期回顾:分支if else switch 三目运算符 格式:if(条件){语句1:}else{语句2:} switch (变量){default:break;case 常量1:语句1 ;break; ...

  8. 踩坑tomcat8.5的cookie机制

    https://www.pomelolee.com/1601.html tomcat升级到8.5版本 发现登录和退出报错,报错日志为下 [http-nio-8080-exec-20] 2016 Aug ...

  9. Extend a root LVM partition online

    There is also a quick remedy for the emergency situation when your root partition runs out of disk s ...

  10. controller层,service层,dao层(main函数,子函数,子的子函数)

    controller层相当于main函数————————————————————————————————————————————————————@RequestMapping("/query ...