zoukankan      html  css  js  c++  java
  • 使用System.getProperty("line.separator")时没有换行问题解决

      项目中要实现替换模版txt文本里面的内容,然后生成新的文档,其中先把模版文本的内容通过创建的 BufferedReader bufReader 使用 readLine() 来一行一行读取,所以在完成替换后要为每一行字符串添加换行符,之前参照网上的方法是使用 System.getProperty("line.separator") ,然后在我的本机(windows 10 系统)上跑起来时下载生成的文本没有问题,但是当我们把服务器(Linux系统)的代码更新之后,下载的文本没有实现换行功能,然后就不知道为什么,于是百度 System.getProperty("line.separator") 的功能,发现 System.getProperty("line.separator") 这个方法是跨平台的,在windows 系统上时添加的换行符是"/r/n",在Linux系统上时添加的是"/r",虽然我们的项目是跑在服务器上面的,但是最终用户使用的时候实在windows系统上下载文档,所以我们不能使用 System.getProperty("line.separator"),应该直接添加“/r/n”,这样才把问题解决。所以我们这里添加的换行符要跟使用设备上面的统一。

      

    BufferedReader bufReader = null;
    try {
        bufReader = new BufferedReader(new InputStreamReader(ins));
        StringBuffer strBuf = new StringBuffer();
        String tmp = bufReader.readLine();
        while( tmp != null ) {//判断读取的内容是否为空
            // 在这里做替换操作
            for (Object key : repData.keySet()) {
                String entryKey = key.toString();
                String entryKeyWord = entryKey.substring(2, entryKey.length()-1);
                String entryValue = repData.get(entryKey).toString();
                tmp = tmp.replaceAll("#\{"+entryKeyWord+"\}",entryValue);
            }
            strBuf.append(tmp);
            strBuf.append("
    ");
            //读取下一行
            tmp = bufReader.readLine();
       }
    
       //把替换后的内容写入文件
       os.write(strBuf.toString().getBytes("utf-8"));
  • 相关阅读:
    一条代码快速解决滚动条隐藏问题
    微信小程序:wx:for循环输出的使用方法以及简单例子
    点运算符(.)和中括号运算符([])有哪些区别
    线程
    ArrayMap 和HashMap的区别
    Android加载图片的策略
    Android图片加载为什么选择glide
    Android 设计模式对比
    Android 注解框架对比
    ReactNative编写规范
  • 原文地址:https://www.cnblogs.com/wgl1995/p/7063658.html
Copyright © 2011-2022 走看看