Java 格式是否可以转换为写入文件?
Is Java formatting transferable to writing files?
抱歉标题模糊。我所拥有的是一个基本上接受用户输入然后将其打印到文件中的程序。很简单。输入由一个备忘录标题和一个以该标题归档的后续备忘录组成。两者之间会有日期戳。
我用于打印文件的代码如下所示:
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);
out 是我之前在程序中创建的 PrintWriter 的名称。控制台显示指令并获取输入,然后将它们写入文件。当我阅读文件中的文本时,它们一起运行,看起来像这样:
ThanksgivingWed Nov 4 14:39:36 CST"Pick up some turkey at the Kroger, you
lazy bum!" said Mom.
但是,如果我将输出更改为仅打印到控制台,则换行符实际上起作用并且输出字符串的三段按行分开。我如何修改它以作为文件输出正常工作?
我假设您正在 Windows 上测试它。这会导致问题,因为在 Windows 上,新行由 \r\n
表示(回车 return,换行),并且并非所有应用程序都乐意只接受 \n
.
为了获得与系统无关的行分隔符,您应该改用 System.lineSeparator()
,
Returns the system-dependent line separator string. It always returns the same value - the initial value of the system property line.separator.
On UNIX systems, it returns "\n"; on Microsoft Windows systems it returns "\r\n".
所以你的代码会变成这样:
out.println(topic + System.lineSeparator() + dateStamp + System.lineSeparator() + message);
抱歉标题模糊。我所拥有的是一个基本上接受用户输入然后将其打印到文件中的程序。很简单。输入由一个备忘录标题和一个以该标题归档的后续备忘录组成。两者之间会有日期戳。
我用于打印文件的代码如下所示:
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);
out 是我之前在程序中创建的 PrintWriter 的名称。控制台显示指令并获取输入,然后将它们写入文件。当我阅读文件中的文本时,它们一起运行,看起来像这样:
ThanksgivingWed Nov 4 14:39:36 CST"Pick up some turkey at the Kroger, you
lazy bum!" said Mom.
但是,如果我将输出更改为仅打印到控制台,则换行符实际上起作用并且输出字符串的三段按行分开。我如何修改它以作为文件输出正常工作?
我假设您正在 Windows 上测试它。这会导致问题,因为在 Windows 上,新行由 \r\n
表示(回车 return,换行),并且并非所有应用程序都乐意只接受 \n
.
为了获得与系统无关的行分隔符,您应该改用 System.lineSeparator()
,
Returns the system-dependent line separator string. It always returns the same value - the initial value of the system property line.separator.
On UNIX systems, it returns "\n"; on Microsoft Windows systems it returns "\r\n".
所以你的代码会变成这样:
out.println(topic + System.lineSeparator() + dateStamp + System.lineSeparator() + message);