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