2016-02-01 150 views
0

我只是試圖將我的輸出寫入文件,並且正在使用FileWriter;將對象寫入文件輸出

File file = new File("data.txt"); 
FileWriter output = null; 

try 
{ 
    Scanner scanner = new Scanner(file); 
    output = new FileWriter("Output.txt"); 
    .... 

所以,當我寫我的String結果,它只是:

output.write("CONFIRMED "); 

但是我怎麼打印的對象?即

output.write(student); 

我本來使用student.print(),用類:

對於Student類:

public void print() 
{ 
    System.out.print(studentID + " " + studentName + " "); 
} 

而對於Node類:

public void print() 
{ 
    item.print(); 
    if(next != null) 
    { 
     next.print(); 
    } 
} 

我必須進口FileWriter進se類也是如此? 我正在考慮將print()方法變爲toString()方法,但我不確定如何更改Node類的方法,因爲它在內部使用print()方法。

+0

什麼的'item'和'next'? –

回答

0

你可以概括Student.print()Node.print(),讓他們接受PrintWriter

public class Student { 
    public void print(PrintWriter out) { 
      out.print(studentID + " " + studentName + " "); 
    } 
} 

然後他們更加有用,而不是綁到System.out。 有了這個,你可以創建一個PrintWriter包裹你的FileWriter,並呼籲那些打印方法:

PrintWriter out = new PrintWriter(new FileWriter("Output.txt")); 
... 
student.print(out); 
+0

或重寫toString()並通過將obj.toString()結果傳遞給writer來完全處理對象寫入。儘管對於要打印大量數據的對象,上述方法更好。然而從設計角度來看,將print()移動到界面可能會更好。像Student這樣的東西實現了Printable,它聲明瞭print()方法。 –

+0

謝謝@wero!我想我會嘗試這樣的事情。 @ShireResident,但我該怎麼做? – user180708

+0

@ user180708用student.toString()替換「CONFIRMED」? –