使用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("\r\n");
        //讀取下一行
        tmp = bufReader.readLine();
   }

   //把替換后的內容寫入文件
   os.write(strBuf.toString().getBytes("utf-8"));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM