java - 如何在 Java 中构建 FileReader 和 BufferedReader 构造函数?
问题描述
我目前正在开发一个项目,在该项目中我正在构建一个项目,该项目读取文件并计算单词和其他事件的出现次数(例如单词“the”出现的次数)等等。我见过很多使用 FileReader 和 BufferedReader 的例子,但它们在 main 中使用,我希望在另一个文件的构造函数中使用它,如下所示:
import java.util.*;
import java.io.*;
public class TextParser {
private FileReader fr;
private BufferedReader br;
private File file;
private String line;
public TextParser() {
this.file = new File("textParser.txt");
this.br = null;
try {
this.fr = new FileReader(file);
this.br = new BufferedReader(this.fr);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (this.br != null) {
this.br.close();
}
if (this.fr != null) {
this.fr.close();
}
} catch (IOException ee) {
ee.printStackTrace();
}
}
}
}
在同一个类中,我希望创建每个计算出现次数的方法,然后调用 main 中的所有内容。我见过的大多数示例都直接在 main 中执行此操作,但是我可以在这样的构造函数中使用 FileReader 和 BufferedReader 吗?我将如何进行测试?
解决方案
这对于在构造函数中执行此代码是有效的。如果您想多次使用 BufferedReader,则必须重新初始化它,例如使用新的实例化。
顺便说一句,构造函数应该仅用于初始化目的。我的建议是在构造函数中初始化 BufferedReader 和 FileReader,在
protected void finalize() throws Throwable {}
方法,当垃圾收集器删除对象时调用,并对方法上的流进行操作。如果您对流有多种用途,您还可以创建一个方法来重置它。
推荐阅读
- mysql - MySQL:根据另一个表中的值过滤选定的值
- html - HTML & CSS 设计技巧
- c# - Visual Studio 在连接到 MySQL 时显示错误
- ios - 使用自定义选项卡栏以编程方式选择选项卡时选项卡栏项目未突出显示
- coinbase-api - 如何取消 react-coinbase-commerce 组件中的费用?
- react-native - 如何使用链接从 react-native 应用程序打开 Skype
- java - 读取 xml 没有给出正确的值
- apache-spark - Azure databricks spark - 写入 blob 存储
- c# - EF Core 如何根据对象属性更新实体
- kubernetes - kubeadm 生产现在准备好了吗?