zoukankan      html  css  js  c++  java
  • Java关于BufferedWriter.newline()换行的注意事项

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

        首先导出到文件需要用到 BufferedWriter。而换行则是通过 bw.newline() 方法,问题将出在 newline() 方法上面。

        我们看一下 newline() api:

     1     /**
     2      * Writes a line separator.  The line separator string is defined by the
     3      * system property <tt>line.separator</tt>, and is not necessarily a single
     4      * newline ('
    ') character.
     5      *
     6      * @exception  IOException  If an I/O error occurs
     7      */
     8     public void newLine() throws IOException {
     9     write(lineSeparator);
    10     }
        英文本身应该没有什么难度,意思是:newLine 方法会调用系统的换行符。而这就是问题的根本。

        不同系统的换行符:

        windows -->  

        linux ux  -->  

        mac         -->  

     【 是回车,return

       是换行,newline】

        我们一般开发是在 windows 下开发,而服务器一般情况下都是 linux。

        如果我们使用 newline 函数换行,在本机测试的时候,因为是 windows 环境,换行符是 ,打开文件时候自然文件是换行处理,没有问题。

       当我们部署到服务器时候,服务器是 linux 环境,newline 读取系统换行符是 ,导出到文件,文件的换行符是 ,当我们把这个文件通过浏览器下载到 windows 时候,再打开文件将会出现没有换行的问题。因为 windows 下对于  的解释并不是换行符。

       所以,我们在不同系统开发时候,如果需要指定文件在某些地方换行,则不能使用 newline 方法。

     必须手动指定换行符:  

     因为在三个系统中,查看该文件,   都会解释为换行。

        以上。

  • 相关阅读:
    1230: [Usaco2008 Nov]lites 开关灯
    1821: [JSOI2010]Group 部落划分 Group
    1819: [JSOI]Word Query电子字典
    1820: [JSOI2010]Express Service 快递服务
    3038: 上帝造题的七分钟2
    1854: [Scoi2010]游戏
    Codevs3278[NOIP2013]货车运输
    关于使用lazytag的线段树两种查询方式的比较研究
    算法模板——splay区间反转 1
    3223: Tyvj 1729 文艺平衡树
  • 原文地址:https://www.cnblogs.com/Xieyang-blog/p/8253753.html
Copyright © 2011-2022 走看看