java生成文本文件linux下换行问题

这是一个老生常谈的问题,我只告诉大家我遇见的问题以及解决方案和整体思路。

         首先我们是在windows环境下开发,服务器环境为linux,需求是生成txt文件并下载。

         开始我用的换行符是System.getProperty("line.separator"),这是java封装的,自动根据操作系统取到相对应的换行符的方法(之前想自己写一个根据操作系统生成换行符的方法,后来发现有了,前人果然机智)。本地测试通过,拿到线上测试,下载下来的文件不换行。

首先,我的反应是标准程序员应激反应,怎么可能,这不科学。。。然后痛定思定,开始思考整个生成文本与显示的流程。先是拼接字符串,然后转化为流输出为文本文件,然后用户打开文本查看。这个流程在服务器为windows时是没问题的,在服务器为linux时出现不换行的bug。我开始也没想通哪个流程出来问题,于是用测试文本\n、\r、\r\n这三种换行符在linux上测试,结果发现\r\n是唯一好用的换行。知其然,知其所以然。幡然醒悟。用户在打开文本时使用的是windows环境,所以\r\n这种windows的换行就能正常显示了,而java的System.getProperty("line.separator")方法自适应系统,所以在linux服务器上用的是\n,而客户用windows打开的时候解析到\n的时候不认为是换行,自然出现了显示的问题。

所以,显示出问题的时候,要看生成时是否有问题,也要看显示时是否有问题,然后看生成与展示的方式是否一致,这种思路在处理乱码的时候尤为受用。

我不喜欢简单的分享代码,我喜欢分享我思考的过程和解决问题的思路~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值