簡體   English   中英

Java寫入File或System.out

[英]Java writing to File or System.out

我需要將字符寫入文件或標准輸出。 我很好奇是否可以用一種方法來完成。

現在我有這樣的事情:

OutputStream out;    
if(toConsole)
   out = System.out;
else
   out = new FileOutputStream(file);

write(out);
}
void write (OutputStream str){
 ....
 str.write(string);

但這是我正在使用的問題(如果“ str”是System.out)寫而不是打印? (打印java doc:“字符串是根據平台的默認字符編碼轉換為字節的”)。

可以使用相同的代碼(和相同的方法)來寫入文件和System.out嗎? (這是我的學校項目,因此我希望它是“純”的並且完全正確)

您要完成的工作是將文件輸出和控制台輸出視為相同。 這是可能的,因為System.outPrintStream ,並且您可以為這樣的文件創建PrintStream

new PrintStream(yourFile) 

或在兩者之間插入BufferedOutputStream

new PrintStream(new BufferedOutputStream(new FileOutputStream(yourFile))).

請注意,這不是必需的 ,因為PrintStream 本身緩沖其輸出

我將創建一個變量(全局變量或非全局變量),以表示當前輸出。 您可以根據需要使用PrintStreamSystem.outFileOutputStream周圍的PrintStream 然后,您可以將此流傳遞給write方法或直接在其上調用print方法。

優點是您無需進行大量代碼修改即可輕松切換此設置,也可以將其重定向到不希望使用的位置。 將其重定向到文件 System.out沒問題! 當前編寫該方法的方式不會獲得純粹的靈活性。

可以 (不是說應該這樣做),也可以使用System.setOut直接重定向System.out 但是,這是不好的樣式,因為它很不常見,並且如果其他人尚未看到對System.setOut的調用,則可能會使其他人感到困惑。

System.out是PrintStream類型的對象。 是的,您可以寫信給
使用完全相同的方法將System.out和/或另一個文件。 只是
構造一個PrintStream對象並將其定向到您的文件。 所以聲明
將out變量作為PrintStream開始。

也可以看看:

http://docs.oracle.com/javase/7/docs/api/java/lang/System.html

http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM