Java - copiar dados de arquivo txt para um novo arquivo csv

2 respostas Resolvido
Henrique_Lima3

Galera estou com dúvida em como realizar a cópia de um arquivo que está em txt para um novo arquivo que irei criar só que em csv. O texto desse arquivo txt é o seguinte:

" Relatorio Janeiro

Codigo Produto Valor_Unitario Qtd_Vendida
1 Cama 859.99 5
2 Colchão 459.99 10
3 Lençol 45.99 13
4 Fronha 25.99 2"

É necessário tratar, para que possa ‘encaixar no modelo csv’?

Me ajuda!

// ----------------- CRIAR ARQUIVO ---------------------

<a class="mention" href="/u/override">@Override</a>

public void CriarArquivo(String path, String nome) throws IOException {

File diretorio = new File(path);

File arquivo = new File(path, “relatorio.csv”);

String linha = new String();

// path = caminho do arquivo; nome = nome do arquivo

// Poderia ser assim… File arq = new File(“C:\TEMP\arquivo.txt”)

// Ou poderia ser assim… File arq = new File(“C:\TEMP”, “arquivo.txt”);
if (arquivo.exists()) {
		FileReader leitorDeArquivo = new FileReader(arquivo);
		BufferedReader bufferArquivo = new BufferedReader(leitorDeArquivo);
		while (true) {
			linha = bufferArquivo.readLine();
			if (linha == null) {
				break;
			}

		}
		FileWriter fileWriter = new FileWriter(linha);
		PrintWriter print = new PrintWriter(fileWriter);
		print.write(linha);
		print.flush(); // finaliza a escrita do conteúdo
		print.close();
		fileWriter.close();
	} else {
		throw new IOException("Diretório inválido");
	}
}

2 Respostas

staroski

Sim, em um arquivo CSV - Comma Separated Values, os campos de cada linha são separados por vírgula.

wldomiciano
Solucao aceita

E se for só questão de substituir os espaços por virgulas, se estiver usando Java 11 ou posterior, poderia fazer assim:

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Collectors;

public class Main {
  public static void main(String... args) throws IOException {
    final var conteudo =
      Files.readAllLines(Path.of("dados.txt"))
           .stream()
           .map(linha -> linha.replace(" ", ","))
           .collect(Collectors.joining("\n"));

    Files.writeString(Path.of("resultado.csv"), conteudo, StandardCharsets.UTF_8);
  }
}
Criado 13 de junho de 2020
Ultima resposta 13 de jun. de 2020
Respostas 2
Participantes 3