Remoção de Linha contendo um trecho especifico

3 respostas
G

Olá,

Preciso que este programa remova todas as linhas que contenha a string [color=red]“2C00000”[/color], neste código que tenho ele remove somente se eu colocar a linha toda :? e não é o caso já que as informações nas linhas irão variar como o exemplo abaixo:
Conteudo do arquivo:
[color=red]
1kljslkjfdskl
2kljdlkfjsdlkfa
21dslkfsd
3sdflk
1klskdjflkadsjflkdjlkdajsflksdjlkfjdslklkajd
2C00000
2C00000dfgdfgsdfgsdfg
2C00000dsfdsfasdf2C00000
2C00000654654654646546sdfsd5fsds
3gfhgfhgfh
5cgfdrtetrshrtsrttfc
1564654656546545645
[/color]

No código que estou enviado ele só removerá a linha 6, sendo que preciso que remova as linhas 6, 7, 8 e 9 por conter a string “2C00000”.

Segue o código:

import java.io.BufferedReader;  
import java.io.FileReader;  
import java.io.File;  
import java.io.FileWriter;  
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.PrintWriter;  
public class FileUtil {  
  public void removeLineFromFile(String file, String lineToRemove) {  
    try {  
      File inFile = new File(file);  
      if (!inFile.isFile()) {  
        System.out.println("Parameter is not an existing file");  
        return;  
      }  
      //Construct the new file that will later be renamed to the original filename.  
      File tempFile = new File(inFile.getAbsolutePath() + ".tmp");  
      BufferedReader br = new BufferedReader(new FileReader(file));  
      PrintWriter pw = new PrintWriter(new FileWriter(tempFile));  
      String line = null;  
      //Read from the original file and write to the new  
      //unless content matches data to be removed.  
      while ((line = br.readLine()) != null) {  
        if (!line.trim().equals(lineToRemove)) {  
          pw.println(line);  
          pw.flush();  
        }  
      }  
      pw.close();  
      br.close();  
    //Delete the original file  
      if (!inFile.delete()) {  
        System.out.println("Could not delete file");  
        return;  
      }  
      //Rename the new file to the filename the original file had.  
      if (!tempFile.renameTo(inFile))  
        System.out.println("Could not rename file");  
    }  
    catch (FileNotFoundException ex) {  
      ex.printStackTrace();  
    }  
    catch (IOException ex) {  
      ex.printStackTrace();  
    }  
  }  
  public static void main(String[] args) {  
    FileUtil util = new FileUtil();  
    util.removeLineFromFile("acionamento.txt", "2C00000");  
  }  
}

Desde já agradeço,

3 Respostas

dssimao

Cara tenta usar o método contains da String. Creio que resolva. Tenta ai:

!line.trim().contains(lineToRemove)

Se quiser pesquise sobre expressão regular, ficaria melhor.

G

Dssimao,

Não funcionou :cry:, inclusive parou até de retirar a linha que só continha a string informada.

Não manjo bem de expressões variaveis já pesquisei e não encontrei nada.

Valeu…

G

dssimao,

Desculpe-me funcionou sim, é porque troquei o nome e ele para de funcionar, mas já voltei e funcionou. :lol: :lol: :lol: :lol:

Valeu muito obrigado.

Criado 10 de dezembro de 2010
Ultima resposta 10 de dez. de 2010
Respostas 3
Participantes 2