log4j与换行,跨平台 我程序中用log.debug(msg);msg里有用"\n"换行的字符串内容,为什么在windows上用记事本打开没有换行呢?另log4j在windows上运行为什么产生的文件格式是unix的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以做个测试,看看究竟那个文件的HelloWorld会换行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) */// :~ 不能用\r\n吧?windows上直接用\n也会换行的啊,在控制台上显示就没问题啊 控制台是可以的,但是记事本就是不行,我的2楼给你测试程序了,你将"Hello\nWorld"写入1.txt时,它只会黑点然而,你将"Hello\r\nWorld"写入2.txt时,它会换行如果你要存入记事本的东西oldString只有\n没有\r\n,你却想\n换行,做法很简单,只需要newString = oldString.replace("\\n","\r\n"); 在JAVA程序中向文件写入内容,使用一般的编辑器时当需要换行时通常会使用换行符或回车符---'\n'、'\r',但它们在记事本文件中会显示成‘■’,根本起不到换行的作用。这是编码问题,记事本的换行符号是"\r\n"。如果有跨平台使用的要求,可以使用 String str= System.getProperty("line.separator"); 来获取换行符。 linux使用 \n windows使用\r\n 其它操作系统可能也不同。 关键是程序要运行的不同的平台上,放在linux上就不是这样了。\n应该是通用的啊,为什么在windows上写入记事本就不一样了呢?控制台为什么就可以呢? 如果有跨平台使用的要求,可以使用 String str= System.getProperty("line.separator"); 来获取换行符。 linux使用 \n windows使用\r\n 其它操作系统可能也不同。 用System.getProperty("line.separator") Eclipse做了什么?它生成的.class文件怎么比javac生成的文件大一些? 大小大小排序问题 如此SQL语句会影响数据库查询性能吗,有多大影响!! 如何判断几个字符是中文或是E文或是日文或是其他国家的非中文? 菜鸟提问:现在想学java,一点java基础都没有,该从哪儿学习呢? 局部变量与实例变量 这样的程序应该如何编译运行?-请帮忙! 新手有关绘图的问题 求助如何利用 Applet 调用声音 关于爬虫模拟登陆 怎样查看java home? 父类应用指向子类对象,我这种写不知道哪里错了,请帮我看看
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) */// :~
你将"Hello\nWorld"写入1.txt时,它只会黑点
然而,
你将"Hello\r\nWorld"写入2.txt时,它会换行如果你要存入记事本的东西oldString只有\n没有\r\n,你却想\n换行,
做法很简单,只需要newString = oldString.replace("\\n","\r\n");