BufferedWriter如何使用write方法实现换行
BufferedWriter write方法实现换行
BufferedWriter对象自带newline()方法可以换行,但如果在字符串中部换行,不想用newline()方法该如何做呢?
使用\n是无法实现的,使用\n后,只会出现一个空格,并未 实现换行,在想要实现换行的地方加入\r\n就行了
例如下面
File file=new File("d:/ioPractice/text.txt");
Writer fw=
new FileWriter(file,true);
BufferedWriter bw=new BufferedWriter(fw);
String str="这是第1行\r\n这是第2行";
bw.write(str);
bw.flush();
bw.close();
fw.close();
Java 输出文件通过 BufferedWriter.newline() 方法换行的陷阱
最近项目中需要导出文件,其实导出文件是一个挺简单的事情。但是却遇到了很奇怪的问题。
首先导出到文件需要用到 BufferedWriter。而换行则是通过 bw.newline() 方法,问题将出在 newline() 方法上面。
我们看一下 newline() api:
newLine
public void newLine()
throws IOException
Writes a line separator. The line separator string is defined by the system property line.separator, and is not necessarily a single newline ('\n') character.
Throws:
IOException - If an I/O error occurs
英文本身应该没有什么难度,意思是:newLine 方法会调用系统的换行符。而这就是问题的根本。
不同系统的换行符:
windows --> \r\n
linux --> \r
mac --> \n
我们一般开发是在 windows 下开发,而服务器一般情况下都是 linux。
如果我们使用 newline 函数换行,在本机测试的时候,因为是 windows 环境,换行符是 \r\n ,打开文件时候自然文件是换行处理,没有问题。
当我们部署到服务器时候,服务器是 linux 环境,newline 读取系统换行符是 \r ,导出到文件,文件的换行符是 \r,当我们把这个文件通过浏览器下载到 windows 时候,再打开文件将会出现没有换行的问题。因为 windows 下对于 \r 的解释并不是换行符。
所以,我们在开发时候,如果需要指定文件在某些地方换行,则不能使用 newline 方法。必须手动指定换行符:\r\n 因为按照上面列举的不同系统换行符看,如果字符串的末尾是 \r\n 在三个系统中,查看该文件,都会解释为换行。
至此,问题分析完毕。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot使用Jasypt对配置文件和数据库密码加密
在做数据库敏感信息保护时,应加密存储,本文就来介绍一下SpringBoot使用Jasypt对配置文件和数据库密码加密,具有一定的参考价值,感兴趣的可以了解一下2024-02-02
Spring-AOP-ProceedingJoinPoint的使用详解
这篇文章主要介绍了Spring-AOP-ProceedingJoinPoint的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2025-03-03
Spring Boot应用程序中如何使用Keycloak详解
这篇文章主要为大家介绍了Spring Boot应用程序中如何使用Keycloak详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-05-05
SpringBoot集成ip2region实现ip白名单的代码示例
ip2region v2.0 - 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现,本文介绍了SpringBoot集成ip2region实现ip白名单的代码工程,需要的朋友可以参考下2024-08-08


最新评论