PrintWriter中的write与println方法居然就是这些区别
为什么循环中分别用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方法居然就是这些区别的更多相关文章
- http中get,post,put,delete方法的用法以及区别
http协议是一种在网络中进行文件传送遵循的协议.一种无状态的协议.http协议服务器端不跟浏览器端建立长久的通信连接. 建立http通信之后,服务端将文件内容传送给浏览器端接收就完成一次请求.当然一 ...
- JAVA printWriter中write()和println()区别
PrintWriter 的Write()方法和println()方法有何细微的区别? 最近学习JAVA网络编程,在服务器端和客户端产生一个Socket 后, 两边各自用getIputStream()和 ...
- 转:PrintWriter中write与println方法的区别
原文地址:https://blog.csdn.net/qq_25610165/article/details/57083118 自己遇到的问题是:刚开始学 socket 通讯, 代码运行是好着的,后来 ...
- jQuery中ajax请求的六种方法(三、四):$.getJSON()方法
4.$.getJSON()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- jQuery中ajax请求的六种方法(三、三):$.post()方法
3.$.post()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- jQuery中ajax请求的六种方法(三、二):$.get()方法
2.$.get()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- jQuery中ajax请求的六种方法(三、一):$.ajax()方法
1.基础的$.ajax()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- Java 中extends与implements使用方法
Java 中extends与implements使用方法 标签: javaclassinterfacestring语言c 2011-04-14 14:57 33314人阅读 评论(7) 收藏 举报 分 ...
- Java中的equals和hashCode方法
本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要 ...
随机推荐
- win7快捷方式图标修复
test.bat ///////////////////////////////////////////////////////////////////////// rem 关闭Windows外壳程序 ...
- bootstrap 4 pull-right无效
/********************************************************************** * bootstrap 4 pull-right无效 * ...
- MySQL中的存储过程和函数使用详解
一.对待存储过程和函数的态度 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在MySQL中的存储过程移植到sqlsever上就不一定可以用了. 2.调试麻烦,在db中报一个错误和在 ...
- opencv的DMatch
1.DMatch是描述图像匹配信息的类 /** @brief Class for matching keypoint descriptors query descriptor index, train ...
- D:\yyy\UNetSegmentation_code_20180301\data\train
key1 numpy.save("filename.npy",a) 利用这种方法,保存文件的后缀名字一定会被置为.npy,这种格式最好只用 numpy.load("fil ...
- 20155208 2006-2007-2 《Java程序设计》第1周学习总结
20155208徐子涵 2016-2017-2 <Java程序设计>第1周学习总结 教材学习内容总结 浏览教材 每章提出自己存在的问题 chapter1:JDK和JRE的区别体现在什么地方 ...
- C++学习(十二)(C语言部分)之 循环
上期回顾:分支if else switch 三目运算符 格式:if(条件){语句1:}else{语句2:} switch (变量){default:break;case 常量1:语句1 ;break; ...
- 踩坑tomcat8.5的cookie机制
https://www.pomelolee.com/1601.html tomcat升级到8.5版本 发现登录和退出报错,报错日志为下 [http-nio-8080-exec-20] 2016 Aug ...
- 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 ...
- controller层,service层,dao层(main函数,子函数,子的子函数)
controller层相当于main函数————————————————————————————————————————————————————@RequestMapping("/query ...