2011-08-23 245 views
4

我正在開發一個小型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只有

回答

4

對於新生產線使用System.getProperty("line.separator") - 這是獲取換行分隔符的平臺無關的方式。 (在Windows上,\r\n,在Linux上的\n

此外,如果這是將要使用\t在非Windows機器上運行,避免 - 用X(四)個空格代替。

1

好視窗預計換行和回車字符以表示一個新行。所以你想做\ r \ n來使它工作。

1

窗口的記事本需要\r\n來正確顯示一個新行。記事本僅忽略\n

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

你將不得不使用Java工具格式化可以在這裏找到: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")