Procurar em string certo valor e gravar a modificação em novo aquivo

Estou tentando pegar uma sequencia de caracteres contida no arq2 e procurando em cada linha se há ocorrencia dessa string em um arq1, em seguida gravar a ocorrencia em um arq3.
O problema é, ou ele nao le linha por linha ou na maioria das vezes ele grava o arquivo em branco.

Alguem pode me ajudar?

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class ProcuraAltera {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String linha1 = new String();
		String linha2 = new String();
		
		linha1 = null;
		linha2 = null;
		
		File arquivo1 = new File("C:\\Users\\Murilo\\Desktop\\Projeto3\\arq1.txt");
		File arquivo2 = new File("C:\\Users\\Murilo\\Desktop\\Projeto3\\arq2.txt");
		File gravacao1 = new File("C:\\Users\\Murilo\\Desktop\\Projeto3\\arq3.txt");
		
		// arq2 tem que ser maior que arq1
		
		if(arquivo1.exists() && arquivo2.exists() && gravacao1.exists()) {
			
			try{
				
				FileReader fr1 = new FileReader(arquivo1);
				BufferedReader br1 = new BufferedReader(fr1);
				
				FileReader fr2 = new FileReader(arquivo2);
				BufferedReader br2 = new BufferedReader(fr2);
				
				FileWriter filew = new FileWriter(gravacao1);
				BufferedWriter grav = new BufferedWriter(filew);
				
				while(linha1 != null){
					
					linha1 = br1.readLine();
					
					while(linha2 != null){
						
						linha2 = br2.readLine();
						
						if(linha2.contains(linha1)) {
							grav.write(linha1);
							grav.newLine();
							System.out.println(linha1);
						}
						
						
					}
										
				}
				
				filew.close();
				grav.flush();
				grav.close();
				
			}catch (Exception e) {
				// TODO: handle exception
			}
		}
	}

}

invés de procurar linha por linha tente usar indexOf este vai te retorna a posição exata do inicio do q vc está procurando.

Olá amigo, a questao é a seguinte, alguem fez o cadastro de produtos em uma planilha com seus codigos e um -1 na frente de alguns codigos, outros nao, a ideia é jogar no arq1 todos os codigos certos dos produtos e no arq2 todos os codigos errados, ao ler cada linha do arq2 ele verifica se existe no arq1 e os substitue em arq3.

OBS: alguns produtos realmente devem possuir -1 porque o cadastro foi feito com -1, porem nao todos

isso mesmo, segue:

int pos = 0;

    while (br1.ready()) {
        String linha = reader.readLine();
        
        pos = linha.indexOf("-1", pos + 1);
        
        if(pos != -1){
            //Grava arq1
        }else{
            //Grava arq2
        }
    }

Problema nao resolvido :frowning: