当前位置: 代码迷 >> J2SE >> log4j与换行,跨平台解决方案
  详细解决方案

log4j与换行,跨平台解决方案

热度:353   发布时间:2016-04-24 12:36:09.0
log4j与换行,跨平台
我程序中用log.debug(msg);
msg里有用"\n"换行的字符串内容,为什么在windows上用记事本打开没有换行呢?

另log4j在windows上运行为什么产生的文件格式是unix的呢?



------解决方案--------------------
你可以做个测试,看看究竟那个文件的HelloWorld会换行
Java code
import java.io.*;import javax.swing.*;public class TestNotepad {    public static void main(String[] args) throws IOException {    stringToFile("Hello\nWorld");    stringToFile("Hello\r\nWorld");        ;    }        public static void stringToFile(String sourceString) {    PrintWriter pw = null;    try {        JFileChooser jFileChooser = new JFileChooser();        javax.swing.filechooser.FileFilter fileFilter = new javax.swing.filechooser.FileFilter() {        public boolean accept(File file) {            if (file.isDirectory())            return true;            String fileName = file.getName();            if (fileName.toUpperCase().endsWith("TXT"))            return true;            return false;        }        public String getDescription() {            return "保存为文本文件";        }        };// 建立一个过滤文件类型的过滤器(对话框中正确显示文件),是否启用过滤器决定于下面两句话        // jFileChooser.addChoosableFileFilter(fileFilter);        // jFileChooser.setFileFilter(fileFilter);        int returnValue = jFileChooser.showSaveDialog(null);        File fileOfSave = null;// 保存文件句柄        if (returnValue == javax.swing.JFileChooser.APPROVE_OPTION) {        fileOfSave = jFileChooser.getSelectedFile();// 获得文件句柄,文件是否存在还未知        }        if(fileOfSave == null) return;        String fileNameOfSave = fileOfSave.getName();// 返回输入的文件名        // 检查文件名是否符合要求,这一步暂时省略......................................        if (fileOfSave.exists() && !isAgree("该文件已经存在,确定要覆盖吗?"))        return;        else        fileOfSave.createNewFile();        pw = new PrintWriter(fileOfSave);        pw.print(sourceString);        pw.flush();    } catch (IOException e) {        throw new RuntimeException(e);    } finally {        if (pw != null)        pw.close();    }    }            public static boolean isAgree(String hint) {    int returnValue = javax.swing.JOptionPane.showConfirmDialog(null, hint);    if (returnValue == javax.swing.JOptionPane.YES_OPTION)        return true;    else        return false;    }    public static int prompt(String promptMessage) {    return JOptionPane.showConfirmDialog(null, promptMessage, "友情提示",        JOptionPane.WARNING_MESSAGE);    }    } /* (Execute to see output) */// :~
------解决方案--------------------
如果有跨平台使用的要求,可以使用 String str= System.getProperty("line.separator"); 来获取换行符。 linux使用 \n windows使用\r\n 其它操作系统可能也不同。
------解决方案--------------------
用System.getProperty("line.separator")
  相关解决方案