2016-02-01 151 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”? –