Java:如何将格式化输出写入纯文本文件

时间:2011-08-23 07:00:51

标签: java

我正在开发一个小型的java应用程序。在某些时候,我在一个纯文本文件中写一些数据。使用以下代码:

Writer Candidateoutput = null;
File Candidatefile = new File("Candidates.txt"),
Candidateoutput = new BufferedWriter(new FileWriter(Candidatefile));
Candidateoutput.write("\n Write this text on next line");
Candidateoutput.write("\t This is indented text");
Candidateoutput.close();

现在一切顺利,文件是用预期的文本创建的。唯一的问题是文本没有格式化所有文本都在单行上。但是,如果我将文本复制并粘贴到MS Word中,则文本会自动格式化。

有没有办法在纯文本文件中保留文本格式?

注意:通过文字格式,我指的是\n\t

6 个答案:

答案 0 :(得分:4)

对新行使用System.getProperty("line.separator") - 这是获取新行分隔符的独立于平台的方式。 (在windows上它是\r\n,在linux上它是\n

此外,如果要在非Windows机器上运行,请避免使用\t - 请改用X(四)空格。

答案 1 :(得分:3)

您可以使用line.separator系统属性来解决您的问题。

E.g。

String separator = System.getProperty("line.separator");

Writer Candidateoutput = null;
File Candidatefile = new File("Candidates.txt"),
Candidateoutput = new BufferedWriter(new FileWriter(Candidatefile));
Candidateoutput.write(separator + " Write this text on next line");
Candidateoutput.write("\t This is indented text");
Candidateoutput.close();

line.separator系统属性是一种独立于平台的方式,可以从您的环境中获取换行符。

答案 2 :(得分:3)

PrintWriter此平台独立 - 使用println()方法。

答案 3 :(得分:2)

您必须使用可在此处找到的Java实用程序 Formatter java.util.Formatter

然后你所要做的就是创建一个Formatter类型的对象,例如:

private Formatter output; 

在这种情况下,output将是您要写入的输出文件。

然后你必须将文件名传递给输出对象,如下所示:

output = new Formatter("name.of.your.file.txt")

完成后,您可以使用output.format命令将文件内容硬编码到输出文件,该命令类似于System.out.printlnprintf命令。

或者使用Scanner实用程序将数据输入内存,然后使用output.format将此数据输出到输出对象或文件。

这是关于如何编写要输出的记录的示例:

output.format( "%d %s %s %2f\n" , field1.decimal, field2.string, field3.string, field4.double)

还有一点比这更多,但这确实胜过解析数据,或使用一堆复杂的第三方插件。

要读取此文件,您可以重定向扫描程序实用程序以读取文件而不是控制台:

input = new Scanner(new File( "name.of.your.file.txt") 

答案 4 :(得分:1)

Windows预计新行和回车符号表示新行。所以你想要\ r \ n让它运作。

答案 5 :(得分:1)

Window的记事本需要\r\n才能正确显示换行符。记事本只会忽略\n