Manipulação de Arquivos .TXT em Java

1 resposta
H

Sou iniciante em java e estou fazendo um programa validador de arquivo .TXT segundo o layout pré-definido que tenho. Consegui abrir o arquivo, ler e reescrever em um novo arquivo. Entretanto na hora de procurar um caractere e mudar ele estou tendo problemas, além de no Arquivo Novo ele escrever NULL no arquivo novo.

Segue abaixo o código:

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

public class TESTANDO {

public static void main(String[] args) {
	File arquivo = new File("C:\\Users\\ArquivoOriginal.txt");
	File arquivoNovo = new File("C:\\Users\\ArquivoNovo.tx");

	try {

		FileReader lendo = new FileReader(arquivo);
		@SuppressWarnings("resource")
		BufferedReader lerArq = new BufferedReader(lendo);
		String linha = lerArq.readLine();
		FileWriter arq = new FileWriter(arquivoNovo);
		arq.write(linha + '\n');

		while (linha != null) {
			System.out.printf("%s\n", linha);
			linha = lerArq.readLine();

			if (linha.contains("\t")) {
				linha.replace("\t", "        ");
				arq.write(linha + "\n");
			} else {
				arq.write(linha + "\n");
			}

		}
		arq.close();
		System.out.println(linha);

	} catch (Exception e) {
		e.printStackTrace();
	}

}
}

1 Resposta

LincolnStuart

Opa :slight_smile:
dei uma adaptada na sua lógica, teste aí este código:

`

public static void main(String[] args) {
        File arquivo = new File("C:\\Users\\ArquivoOriginal.txt");
        File arquivoNovo = new File("C:\\Users\\ArquivoNovo.txt");
        try {
            FileReader lendo = new FileReader(arquivo);
            BufferedReader lerArq = new BufferedReader(lendo);
            FileWriter arq = new FileWriter(arquivoNovo);
            String linha;
            //tentei dar uma melhorada nesta condição
            while ((linha = lerArq.readLine()) != null) {
                if (linha.contains("\t")) {
                    //o replace não modifica a String, ele apenas devolve o modificado então devolvi o modificado para a própria String
                    linha = linha.replace("\t", "        ");
                }  
                arq.write(linha + "\n");
            }
            //depois é bom você mudar este close para um finally
            arq.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

`

Criado 20 de junho de 2016
Ultima resposta 21 de jun. de 2016
Respostas 1
Participantes 2