Проверял на файлах все работает
package com.javarush.task.task19.task1922;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Ищем нужные строки
*/
public class Solution {
public static List<String> words = new ArrayList<String>();
static {
words.add("файл");
words.add("вид");
words.add("В");
}
public static void main(String[] args) throws Exception{
int count = 0;
ArrayList<String> list = new ArrayList<>(); // для хранения строк с файла
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine();
reader.close();
BufferedReader fileReader = new BufferedReader(new FileReader(name));
while (fileReader.ready()) {
String str = fileReader.readLine(); // добавляем строки с Файла в list
list.add(str);
}
fileReader.close();
for (int i = 0; i < list.size(); i++) { // выводим строки для проверки колва слов
String b = list.get(i);
for (int y = 0; y < words.size(); y++) { // слова чтобы проверить кол-во
String v = words.get(y);
Pattern pat = Pattern.compile(v);
Matcher mat = pat.matcher(b);
while (mat.find()) { // добавляем ++1 если есть слово в строке
count++;
}
}
if (count == 2) { // выводим если два слова совпадает
System.out.println(b);
}
count = 0; //обнуляем для проверки следующей строки
}
}
}