为什么 BufferedWriter 没有第二次打印数据?

Why BufferedWriter doesn't print data for the 2nd time?

我正在使用链表。 node class(对于链表)是这样的:

public class node {
    String data;
    node next;
    node previous;
}

在使用nodeclass的classstack中,我写了一个方法print()来打印值,print()如下所示:

void print() throws IOException{
        try(BufferedWriter print=new BufferedWriter(new OutputStreamWriter(System.out))){
            node temp=this.getFirstNode();
            while(temp!=null){
                print.write(temp.getData());
                temp=temp.getNext();
            }
            print.close();
        }
    }

当我创建 stack class 的 2 个实例并调用 print() 时,它只打印第一个实例的 data。例如,在下面的代码中,它不会打印 Bdata:

public static void main(String[] args) {
        stack A=new stack();
        stack B=new stack();
        A.print();
        B.print();
    }

我找了很多,也调试了好几次,运行完美。但无法弄清楚为什么它没有第二次打印出 data

您已关闭 System.out,这是您通常不应该做的事情。虽然在 Java 中使用 try-with-resource 语法通常是最佳实践,但在处理 System.out 时它只是多余的(阅读:通常是错误的):

void print() throws IOException{
    BufferedWriter print = new BufferedWriter(new OutputStreamWriter(System.out));
    node temp = this.getFirstNode();
    while(temp != null){
        print.write(temp.getData());
        temp = temp.getNext();
    }
}