A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘渝灵 于 2013-6-5 15:02 编辑

如题,
FileWriter fw = new FileWriter("client.txt");
fw.write('\n');

fw.flush();
fw.write("hello");
fw.flush();
fw.close();

用记事本打开,发现hello前面是换行?可是windows中\n不是换行。难道是jvm能自动把\n和\r\n转换成相应平台的换行符?

评分

参与人数 1技术分 +1 收起 理由
尹丽峰 + 1

查看全部评分

5 个回复

倒序浏览
写入时,遇到'/n'就转换成平台相关的换行符(对与windows就是"/r/n");
读入时,遇到平台相关的换行符(比如windows下的"/r/n"),转换成'/n'

评分

参与人数 1技术分 +1 收起 理由
尹丽峰 + 1

查看全部评分

回复 使用道具 举报
Jomes 发表于 2013-6-5 13:26
写入时,遇到'/n'就转换成平台相关的换行符(对与windows就是"/r/n");
读入时,遇到平台相关的换行符(比如w ...

你的斜杠反了吧?
回复 使用道具 举报
JerryDu 发表于 2013-6-5 14:12
你的斜杠反了吧?

斜杠反了好像也可以编译通过并正常运行的,我在C和java里都成功过
回复 使用道具 举报
你的斜杠反了吧?

呵呵,2楼的确实是写反了。但是我觉得他说得很对
如果你是在windows的操作系统中,记事本默认的换行是"/n/r"
如果你要是在Linux系统中就是"\n"了.
如果你用editplus打开的话也是不一样的效果.

同一个命令在不同的系统中代表不同的意思,对应的不同软件能识别的不同命令,打开后效果也不一样
但是,我感觉楼主的代码在Windows系统,用记事本文件打开后不应该Hello前面是回车,所以我复制了去运行下,确实前面是什么也没有。 可能楼主的系统是Linux?
如果楼主想在记事本文件中看到的现实效果是\n的话,那楼主可以把代码写成这样。
FileWriter fw = new FileWriter("client.txt");
fw.write("\\n");

fw.flush();
fw.write("hello");
fw.flush();
fw.close();

评分

参与人数 1技术分 +1 收起 理由
尹丽峰 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 刘渝灵 于 2013-6-5 15:24 编辑

重新看了下回车换行的信息,感谢大家的回复。相关信息:Windows 采用 \r\n 是有原因的,Windows 采用了传统的英文打字机的模式。想想看英文打字机是如何换行的呢?英文打字机是选择将小车退回至起点,这个过程称为回车(carriage return, CR),随后把小车调至下一行的位置,这个过程称为换行(line feed, LF),这样就完成了英文打字机中换行过程。
回车(CR)在计算机中使用 ASCII 为 13 的字符来表示,换行(LF)使用ASCII 为 10 的字符来表示。这也就是 Windows 的换行采用 \r\n 来表示的原因。


做了个测试:空的文本文件写入单个字符:'\n'(write('\n')),用记事本打开,光标可以点到第二行,已经换行。文件属性显示1字节。
                     空的文本文件,用记事本打开,按一次回车键后保存。文件属性显示2字节。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马