最近项目中需要导出文件,其实导出文件是一个挺简单的事情。但是却遇到了很奇怪的问题。

首先导出到文件需要用到 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 在三个系统中,查看该文件,都会解释为换行。

至此,问题分析完毕。

注:参考链接:http://blog.csdn.net/TroyLemon/article/details/47781817

Java 输出文件通过 BufferedWriter.newline() 方法换行的更多相关文章

  1. Java读写文件的几种方法

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java ...

  2. java写入文件的几种方法分享

    转自:http://www.jb51.net/article/47062.htm 一,FileWritter写入文件 FileWritter, 字符流写入字符到文件.默认情况下,它会使用新的内容取代所 ...

  3. java写入文件的几种方法小结

    一,FileWritter写入文件 FileWritter, 字符流写入字符到文件.默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函 ...

  4. Java输出文件到本地(输出流)

    package cn.buaa; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; im ...

  5. java jsp文件报错解决方法

    初次使用java开发 下载好代码之后,用maven编译都是ok的,第二天,打开项目一看,好的web项目的jsp文件提示错误,后面,查了下问题,是tomcat没有配置路径导致的问题,现在大致记录一下解决 ...

  6. Eclipse ee项目 Java Resources文件报错解决方法

    通常是JDK版本配置问题,这里使用的是JDK1.8版本 确保jre版本为本机配置的版本 打开Navigator目录的.settings文件夹修改org.eclipse.wst.common.compo ...

  7. Linux服务器Java输出文件中文乱码

    使用下面语句查看编码: String encoding = System.getProperty("file.encoding");结果输出:ANSI_X3.4-1968,从而导致 ...

  8. 【java】java删除文件delete和deleteOnExit 方法的区别,为什么调用deleteOnExit无效?

    delete() 是即刻删除 public boolean delete() { SecurityManager security = System.getSecurityManager(); if ...

  9. Java读写文件方法总结

    Java读写文件方法总结 Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用Java的读写文件方法来处理数据方面的输入输出,确实很方便.奈何我的记性实在是叫人着急,很多时候既 ...

随机推荐

  1. Python学习札记(七) Basic4 条件判断

    参考:条件判断 Note 1.Python的条件判断关键字与C语言类似,if.else,以及elif,相当于C语言中的else if. 2.Python与C语言不一样的是,使用缩进来判断语句是否属于条 ...

  2. linux怎么上真正的国际互联网

    1.安装git yum install -y git 2.执行git clone git@github.com:XX-net/XX-Net.git 3.升级python到python 2.7(妈妈说p ...

  3. [C# 开发技巧系列]如何动态设置屏幕分辨率

    首先,大家应该明确,现在没有可用的API来给我们动态地设置屏幕分辨率,我们要实现这个需求,我们只能在C#程序中调用Win32 API 函数来解决这个问题的,这里用C#代码调用Win32 API 就涉及 ...

  4. 利用Object.defineProperty实现Vue数据双向绑定

    body部分很简单,一个输入框和一个展示的div <div> <p>你好,<input id='nickName'></p> <div id=&q ...

  5. 代码审查工具Sonarqube安装

    前言:在项目开发当中,完成需求并上线是一件很开心的事情,但为了能按时上线功能不得不为了完成功能而写代码,写的时候觉得先把功能上了以后再回头优化此处代码,但真正上线之后你就会发现你再也不想去修改之前遗留 ...

  6. String类的subString(i)方法(基于jdk 1.9)

    只有一个参数的: String str = new String("ABCD"); System.out.println("str="+str.substrin ...

  7. Mahout 0.10.1安装(Hadoop2.6.0)及Kmeans测试

    1.版本和安装路径 Ubuntu 14.04 Mahout_Home=/opt/mahout-0.10.1 Hadoop_Home=/usr/local/hadoop Mavent_Home=/opt ...

  8. HDU 3506 (环形石子合并)区间dp+四边形优化

    Monkey Party Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Tot ...

  9. 玲珑oj 1129 ST

    1129 - 喵哈哈村的战斗魔法师丶坏坏い月 Time Limit:3s Memory Limit:256MByte Submissions:490Solved:107 DESCRIPTION 坏坏い ...

  10. nyoj744——异或(sb题)

    蚂蚁的难题(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 小蚂蚁童鞋最近迷上了位运算,他感觉位运算非常神奇.不过他最近遇到了一个难题: 给定一个区间[a,b] ...