2015-11-04 61 views
0

对不起,模糊的标题。我拥有的是一个基本上接受用户输入的程序,然后将其打印到文件中。很简单。输入内容包括一个备忘录标题和随后在该标题下提交的备忘录。在两者之间会有日期戳记。Java格式是否可转换为写入文件?

我有打印的文件中的代码如下所示:

System.out.println("Memo topic (enter -1 to end):"); 
String message = console.nextLine(); 
now = new Date(); 
String dateStamp = now.toString(); 
out.println(topic + "\n" + dateStamp + "\n" + message); 

出来是一个PrintWriter我先前在程序中创建的名称。控制台显示说明并接受输入,然后将它们写入文件。当我看到这一切一起运行,看起来像这样的文件中的文本:

ThanksgivingWed Nov 4 14:39:36 CST"Pick up some turkey at the Kroger, you 
lazy bum!" said Mom. 

但是,如果我改变输出,只是打印到控制台时,换行符实际工作和三块的输出字符串按行分开。我如何修改它以正确输出到文件?

+0

你在记事本中打开你的最终文件? – reos

+0

是的,它只是一个在Windows的记事本中打开的纯文本文件。 – JoeSchmuck

回答

6

我假设你在Windows上测试这个。这会导致问题,因为在Windows上,新行由\r\n(回车,换行)表示,并不是所有的应用程序都会愉快地接受\n

为了得到一个系统无关的行分隔符,你应该使用System.lineSeparator()来代替,该

返回系统相关的行分隔符字符串。它总是返回相同的值 - 系统属性line.separator的初始值。

在UNIX系统上,它返回“\ n”;在Microsoft Windows系统上,它返回“\ r \ n”。

所以,你的代码将成为这个:

out.println(topic + System.lineSeparator() + dateStamp + System.lineSeparator() + message); 
+0

谢谢。因此lineSeparator()本身决定使用哪个字符,取决于它所运行的系统?如果我在另一台机器上运行这个相同的代码,它会自动决定适当的分隔符? – JoeSchmuck

+0

@JoeSchmuck是的。它的目的是让你根本不需要担心它。在运行时,它会根据它运行的位置返回正确的值。 – resueman

相关问题