为什么循环中分别用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. C++中vector容器的常用操作方法实例总结

    C++中vector容器的常用操作方法实例总结 参考 1. C++中vector容器的常用操作方法实例总结: 完

  2. 归并排序merge_sort

    将区间递归分解,直到区间只有2个元素,然后比较大小,排序,等递归回来的时候就将排序好的子区间再排序合并....一直排序合并,最后就排序完成了. (可以做范围大的逆序数的题) #include < ...

  3. 将数据存入mysql中

    import pymysql import warnings # 忽略警告 warnings.filterwarnings("ignore") # 连接数据库 db = pymys ...

  4. Mypwd 的解读与实现 20155208

    Mypwd 的解读与实现 20155208 linux下pwd命令的编写 实验要求: 1 .学习pwd命令 2 . 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 .实现my ...

  5. EasyUI datagrid 查询、设置、提交 三

    查询 $(“#grid”).datagrid(“load”,{  a: $('#id').val(),b :$('#text').val() });   {} 里面可以 是序列化参数 $(“#grid ...

  6. Python学习之---Python中的内置函数(方法)(更新中。。。)

    add(item)   #将item添加到s中,如果item已经在s中,则无任何效果 break        #退出循环,不会再运行循环中余下的代码 bool()     #将参数转换为布尔型 by ...

  7. Echarts全解注释

    coordinate-geo.js文件为地理坐标系的配置参数 mytextStyle={ color:"#333",//文字颜色 fontStyle:"normal&qu ...

  8. (惊艳)hashmap的理解(映射)

    第一: hashmap在内存中是长这样的,数组+链表的形式 // HashMap采用链表法解决冲突,每一个Entry本质上是一个单向链表 transient Entry[] table; 第二:  p ...

  9. 刚开始学java和刚去工作的时候,1.path路径 2.classpath路径 还有JAVA_HOME相当于/dgs这个路径

    把里面bin文件夹下面的可执行文件都配置到path路径下了,以后只要在Dos窗口输入命令就可以运行 无论是在dos窗口下还是在eclispe中只需要配置这个path变量,不需要配置classpath ...

  10. pushpin openresty 集成试用

    pushpin 是一个很不错的将restapi 转换为reailtime api 的proxy,openresty 具有很强的nginx 控制能力 可以方便的用来进行api 的开发,默认其他语言pus ...