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

5

我正在开发一个小型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个回答

4

使用System.getProperty("line.separator")来换行 - 这是获取换行符的跨平台方式。(Windows上是\r\n,Linux上是\n

此外,如果这将在非Windows计算机上运行,请避免使用\t - 使用四个空格代替。


3
您可以使用line.separator系统属性来解决您的问题。
例如:
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 系统属性是从您的环境中获取换行符的平台无关方式。


3
一个PrintWriter可以实现跨平台使用,使用println()方法。

2
您需要使用Java实用程序Formatter,可以在此处找到:java.util.Formatter 然后,您只需创建一个Formatter类型的对象,如下所示:
private Formatter output; 

在这种情况下,output将是您正在写入的输出文件。然后,您需要像这样将文件名传递给输出对象:
output = new Formatter("name.of.your.file.txt")

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

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

以下是如何将记录写入输出的示例:

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

还有一些细节需要注意,但这比解析数据或使用一堆复杂的第三方插件要好得多。

要读取此文件,您需要将Scanner工具重定向到读取文件而不是控制台:

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

1

Windows期望换行符和回车符表示新的一行。因此,您需要使用\r\n来使其正常工作。


1

Windows 的记事本需要 \r\n 来正确显示换行。只有 \n 会被记事本忽略。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接