我试图让我的应用程序读取文本文件并查找字符串。如果字符串不存在,则使用println。我唯一的问题是它似乎无法读取文本文件。到目前为止我得到的是:
PrintWriter itemwriter = new PrintWriter(new FileOutputStream(items));
FileInputStream fstream = new FileInputStream(items);
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
if (strLine.contains(name)) {
//do nothing, the item already is in the database.
} else {
itemwriter.println(name);
}
但这似乎不管用。有什么建议吗?
2条答案
按热度按时间knpiaxh11#
你试图同时读写同一个文件。虽然可能有办法让它发挥作用,但这将是一个棘手的问题。
我建议您读取文件a并写入文件b—如果您想有效地替换输入文件,那么您可以在最后执行一系列移动和删除操作。
其他一些建议:
您应该有try/finally块来关闭最后的输入和输出。
你不需要使用
DataInputStream
-你不能用它的任何东西。直接 Package 输入流。我建议您显式地为输入和输出指定编码,而不是信任默认编码(我希望如此
FileWriter
以及FileReader
在其构造函数中接受编码。)使用起来更健壮
OutputStreamWriter
(或类似的东西)而不是PrintWriter
-目前,你在写作时不会发现任何错误。比如说:
遗憾的是,java将try/finally块做得如此巧妙。哦,为了c#
using
声明。。。kq0g1dla2#
首先,你不应该使用流。使用文件读取器和文件编写器。
如果您需要更多帮助,请发布您的sscce以显示问题。