O Java oferece diversas classes para manipulação de arquivos. Mas não encontramos algum método que tenha a função de excluir determinada linha, devido a esse fato ensinaremos, nesse tutorial, como excluir uma determinada linha que contém um texto.
Caso você não saiba como ler e escrever no arquivo leia: http://douglasboza.inforgamesdicas.com/2014/02/criacao-leitura-e-escrita-de-arquivos.html
Dependendo do caso em que você queira excluir uma linha, seu código terá problemas, pois se, por exemplo, você desejar excluir a linha com o nome "João", se alguma outra linha conter esse nome, ocorrerá um erro e ambas serão excluídas. A solução para isso é você criar um id para cada linha, assim se você quiser excluir a linha do cadastro "joão", excluirá pelo seu id, assim "id=01".
Primeiramente deve-se criar um ArrayList para salvar as linhas que não serão excluídas. Após isso um while deverá ser usado para procurar a linha que será excluída, enquanto a linha for lida e nela não conter o conteúdo da linha que se quer remover, ela é salva no ArrayList, ao final limpa-se o arquivo e transfere-se o arquivo do ArrayList para o arquivo.
ArrayList<String> guardarLinhas = new ArrayList<String>();
String linha = "";
String palavra = "linha excluida"
try {
BufferedReader in = new BufferedReader(new FileReader("arquivo.txt"));
FileWriter fw = new FileWriter("dados/arquivo.dat", true);
BufferedWriter bw = new BufferedWriter(fw);
while ((linha = in.readLine()) != null) {
if (linha.contains(palavra)) { //se na linha não conter a palavra, ela é salva
} else {
guardarLinhas .add(linha);
}
}
fw.close();
bw.close();
in.close();
File file = new File("arquivo.txt"); //limpa os dados do arquivo
file.delete();
File file2 = new File("arquivo.txt"); //cria um novo arquivo
file2.createNewFile();
FileWriter fw2 = new FileWriter("dados/arquivo.dat", true);
BufferedWriter bw2 = new BufferedWriter(fw2);
for (int i = 0; i < guardarCadastros.size(); i++) { //transfere o ArrayList para o arquivo
bw2.write(guardarCadastros.get(i));
bw2.newLine();
}
bw2.close();
fw2.close();
} catch (IOException e) {
}
public static void main(String[] args) {
File fil = new File("arquivo.txt");
try{
FileReader fr = new FileReader(fil);
BufferedReader br = new BufferedReader(fr);
String linha = br.readLine();
ArrayList<String> salvar = new ArrayList();
while(linha != null){
if(linha.equals("linha3") == false){
salvar.add(linha);
}
linha = br.readLine();
}
br.close();
fr.close();
FileWriter fw2 = new FileWriter(fil, true);
fw2.close();
FileWriter fw = new FileWriter(fil);
BufferedWriter bw = new BufferedWriter(fw);
for(int i = 0; i<salvar.size(); i++){
bw.write( salvar.get(i) );
bw.newLine();
}
bw.close();
fw.close();
}catch(IOException ex){
}
}
String linha = "";
String palavra = "linha excluida"
try {
BufferedReader in = new BufferedReader(new FileReader("arquivo.txt"));
FileWriter fw = new FileWriter("dados/arquivo.dat", true);
BufferedWriter bw = new BufferedWriter(fw);
while ((linha = in.readLine()) != null) {
if (linha.contains(palavra)) { //se na linha não conter a palavra, ela é salva
} else {
guardarLinhas .add(linha);
}
}
fw.close();
bw.close();
in.close();
File file = new File("arquivo.txt"); //limpa os dados do arquivo
file.delete();
File file2 = new File("arquivo.txt"); //cria um novo arquivo
file2.createNewFile();
FileWriter fw2 = new FileWriter("dados/arquivo.dat", true);
BufferedWriter bw2 = new BufferedWriter(fw2);
for (int i = 0; i < guardarCadastros.size(); i++) { //transfere o ArrayList para o arquivo
bw2.write(guardarCadastros.get(i));
bw2.newLine();
}
bw2.close();
fw2.close();
} catch (IOException e) {
}
Outro Exemplo:
public static void main(String[] args) {
File fil = new File("arquivo.txt");
try{
FileReader fr = new FileReader(fil);
BufferedReader br = new BufferedReader(fr);
String linha = br.readLine();
ArrayList<String> salvar = new ArrayList();
while(linha != null){
if(linha.equals("linha3") == false){
salvar.add(linha);
}
linha = br.readLine();
}
br.close();
fr.close();
FileWriter fw2 = new FileWriter(fil, true);
fw2.close();
FileWriter fw = new FileWriter(fil);
BufferedWriter bw = new BufferedWriter(fw);
for(int i = 0; i<salvar.size(); i++){
bw.write( salvar.get(i) );
bw.newLine();
}
bw.close();
fw.close();
}catch(IOException ex){
}
}
Nenhum comentário:
Postar um comentário