java - 逐行比较文本文件与动态变量

标签 java string file search text

我有一个文本文件sample.txt,其中包含以下几行

sample1.txt
test.ppt
example.doc
content.pdf

我有一个名为 field 的动态变量(例如 phpcookbook.pdfsample1.txt),它应该与 中的每一行进行比较>sample.txt 文件,如果文本文件不包含字段,则应附加到sample.txt。我已尝试以下代码,但它不起作用:

File insert=new File(sample.txt);
BufferedReader br = new BufferedReader(new FileReader(insert));
String strLine;

while ((strLine = br.readLine()) != null) {
    if(!strLine.equals(field)) {
        FileWriter fw = new FileWriter(insert, true);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.append(field);
        bw.close();
    }
}

我应该得到以下输出

sample1.txt
test.ppt
example.doc
content.pdf
phpcookbook.pdf

如何逐行比较文本文件与动态变量?

最佳答案

如果我正确理解了这个问题,这就是您所需要的:

File insert = new File("sample.txt");
BufferedReader br = new BufferedReader(new FileReader(insert));
String strLine;
Boolean hasLine = false;

while ((strLine = br.readLine()) != null) {
    if(strLine.equals(field)) {
        hasLine = true;
        break;
    }
}

br.close();

if (!hasLine) {
    FileWriter fw = new FileWriter(insert, true);
    BufferedWriter bw = new BufferedWriter(fw);
    bw.append(field + "\n"); // assumes field does not already have a newline
    bw.flush();
    bw.close();
}

注意break;。这将中断 while 循环,因为您已经找到了所需的答案。

Your original code was doing:
for every line:
  Do I equal field?
    Yes: goto next line
    No: append field to file and goto next line

但是您想知道的是 field 是否出现在文件中,而不是出现在每一行中。

关于java - 逐行比较文本文件与动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193622/

相关文章:

使用 Xamarin 注册 Google Cloud Messaging 时出现 Java.Lang.LinkageError

java - 源附件不包含文件 Throwables.class 的源

c - fgets 输出奇怪的垃圾字符

Python统计目录及其所有子目录中的文件

java - 使用 AsyncTask 传递值

java - 应用程序因模拟方法调用而挂起

java - 可以仅使用队列将中缀表示法中的字符串转换为前缀表示法吗? (考虑唯一的操作是 + 和 - 的情况)

java - + Java 中字符串的运算符

python - 如何在文件名中插入零以使它们的长度相同

java - 从 System.out.println 写入文件