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

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 ---------------------
@Override
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");
	}
}

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

1 curtida

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);
  }
}
1 curtida