Java 类可以有自己的私有PrintWriter吗?

Java 类可以有自己的私有PrintWriter吗?,java,file-io,printwriter,Java,File Io,Printwriter,我正在编写一个表类,它存储有关关系的列名和长度信息。然而,类本身并不存储记录/元组,因为这些信息应该通过Insert方法直接输入到txt文件中。为了通过不为每次调用重新创建printwriter来简化insert方法,Table类是否可以拥有自己的printwriter,我可以从Table.insert调用它?基本上 public class Table{ private String tableName; private PrintWriter writer; pub

我正在编写一个表类,它存储有关关系的列名和长度信息。然而,类本身并不存储记录/元组,因为这些信息应该通过Insert方法直接输入到txt文件中。为了通过不为每次调用重新创建printwriter来简化insert方法,Table类是否可以拥有自己的printwriter,我可以从Table.insert调用它?基本上

public class Table{
    private String tableName;
    private PrintWriter writer;

    public void Table(){
        //get table name
        writer = new PrintWriter(tableName+".txt"); 
    ...}

    public void insert(){
        //get, format, add info to file
        writer.format(formatstring, args);
    }

使用PrintWriter是否有任何缺陷?

总之,是的,您可以持有一名
PrintWriter
成员。由于您在这里处理的是文件系统,因此在创建
PrintWriter
时可能会出现各种各样的问题。更好的做法是在构造函数中打开它(而不是在成员定义中内联它),以允许正确的异常处理。

总之,是的,您可以持有
PrintWriter
成员。由于您在这里处理的是文件系统,因此在创建
PrintWriter
时可能会出现各种各样的问题。更好的做法是在构造函数中打开它(而不是在成员定义中内联它),以允许正确的异常处理。

您的
writer
实例化可能应该在构造函数中。我相信上述代码中的
tableName
将为null,从而导致错误或文件名为
.txt
您绝对不应该为每次调用创建
PrintWriter
。只要确保按照@CollinD的建议去做就行了。
writer
的实例化应该在构造函数中。我相信上述代码中的
tableName
将为null,从而导致错误或文件名为
.txt
您绝对不应该为每次调用创建
PrintWriter
。确保你按照@CollinD的建议去做。你的意思是在构造函数中打开它而不是在那里定义它吗?还是在我编辑代码之前你回答了?@PeterSon是的,在你编辑代码之前我回答了question@PeterSon是的,它应该是你的意思是在构造函数中打开它,而不是在那里定义它?还是在我编辑代码之前你回答了?@PeterSon是的,在你编辑代码之前我回答了question@PeterSon是的,应该是