[RESOLVIDO]Ler tabela txt e escrever seus inserts em txt

Consegui fazer com que o java lesse um arquivo simples .txt
o conteúdo do arquivo é este:

Natanael Pantoja|Fortaleza|27
Paulo Silveira|São Paulo|35

e meu código:

[code]import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class Main
{
public static void main(String[] args) throws IOException
{

	Scanner scanner = new Scanner(new FileReader("arquivo.txt")).useDelimiter("\\||\\n");
	
	while(scanner.hasNext())
	{
		String nome = scanner.next();
		String cidade = scanner.next();
		String compras = scanner.next();
		System.out.println(nome);
		System.out.println(cidade);
		System.out.println(compras);
	}
	
}

}[/code]

Não entendi muito bem o uso desse delimitador.
a saída no console está assim:

Natanael Pantoja
Fortaleza
27
Paulo Silveira
São Paulo
35

Conclusão, a ajuda que eu quero é bem simples e óbvia pra vocês… Como colocar a saída do console para:

Natanael Pantoja|Fortaleza|27
Paulo Silveira|São Paulo|35

O que tenho de fazer ou mudar no meu código?

while (scanner.hasNext()) { System.out.println(scanner.nextLine()); }

Funcionou obrigado, mas esqueci de mencionar que eu preciso guardar esses valores numa variável, como no meu código:

String nome = scanner.next();
String cidade = scanner.next();
String compras = scanner.next();
String[] parametros = scanner.nextLine().split("\\|");
System.out.println(parametros[0]);
System.out.println(parametros[1]);
System.out.println(parametros[2]);

A grosso modo eu queria fazer assim:

[code]import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) throws IOException
{

	Scanner scanner = new Scanner(new FileReader("arquivo.txt"));
	
	
	while(scanner.hasNext())
	{	
		String[] parametros = scanner.nextLine().split("\\|");  
		System.out.println(parametros[0]);  
		System.out.println(parametros[1]);  
		System.out.println(parametros[2]); 
        
		scanner.close();
	}
	
	File arquivo = new File("inserts.txt");  
	FileWriter fw = new FileWriter(arquivo);  
	BufferedWriter bw = new BufferedWriter(fw);  
	  
	bw.write("insert into tabela (nome, cidade, idade) values ("+parametros[0]+","+parametros[1]+","+parametros[2]);  
	bw.flush();  
	bw.close();
}

}
[/code]

Que ele lesse as duas linhas do meu arquivo txt
e que gerasse os inserts dessas duas linhas…

exemplo: ele leria natanael | fortaleza | 85
e escreveria no arquivo txt: insert into tabela (nome,cidade,idade) values (“natanael”,“fortaleza”,“85”);

conseguiu entender mais ou menos a grosso modo?

Entendi, e qual a dúvida agora ?

É que o código meu acima, está com erro.

  1. ele só está mostrando um dos nomes guardados no arquivo txt, sendo que são dois.
  2. ele não tá concatenando os parametros e seus índices.

o que fazer?

[quote=jkrfabio]É que o código meu acima, está com erro.

  1. ele só está mostrando um dos nomes guardados no arquivo txt, sendo que são dois.
  2. ele não tá concatenando os parametros e seus índices.

o que fazer?[/quote]

  1. Dentro do While, já monte o insert e guarde dentro de uma lista para gerar o txt posteriormente.
  2. Você está tentando usar o array parâmetros fora do while sendo que ele foi criado dentro.
public static void main(String[] args) throws IOException
	{

		Scanner scanner = new Scanner(new FileReader("arquivo.txt"));
		
		while(scanner.hasNext())
		{	

			 	String[] parametros = scanner.nextLine().split("\\|");    
	            System.out.println(parametros[0]);    
	            System.out.println(parametros[1]);    
	            System.out.println(parametros[2]);
	            
	            File arquivo = new File("inserts.txt");
	            FileWriter fw = new FileWriter(arquivo);
	            BufferedWriter bw = new BufferedWriter(fw);
	            
	            bw.write("insert into tabela (nome, cidade, idade) values ("+parametros[0]+","+parametros[1]+","+parametros[2]+");");
	            bw.flush();
	            bw.close();

    	}

	}

Você está me ajudando bastante, estamos quase conseguindo.
esse meu código ele escreveu somente os dados da segunda linha do meu arquivo.txt
não gravou todos os dois nomes.
o que está faltando?

Vamos pensar… você está criando o arquivo.txt toda vez que entrar no while… logo, a cada linha ele vai se sobrescrever… você precisa criar o arquivo antes do while e fechar ele depois… de modo que para cada linha do while vc escreva uma linha no arquivo com o write

Tente entender oque você escreve, o código de um programa deve ser como uma redação


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
class Main
{
	public static void main(String[] args) throws IOException
	{

		Scanner scanner = new Scanner(new FileReader("arquivo.txt"));

		File arquivo = new File("inserts.txt");  
		FileWriter fw = new FileWriter(arquivo);  
		BufferedWriter bw = new BufferedWriter(fw);  
		
		//percorre o arquivo linha a linha
		while(scanner.hasNext()) 
		{	
			String[] parametros = scanner.nextLine().split("\\|"); //pega a linha e divide conforme o delimitador  
			System.out.println(parametros[0]);  
			System.out.println(parametros[1]);  
			System.out.println(parametros[2]);             

			//a escrita do insert é para cada linha lida do arquivo de entrada
			bw.write("insert into tabela (nome, cidade, idade) values ("+parametros[0]+","+parametros[1]+","+parametros[2]);  
			bw.flush();
    	}
		scanner.close(); //o fechamendo do scanner ocorre quando nao vou mais utilizalo
		bw.close();
		fw.close();
	}
}

[quote=DavidUser]Tente entender oque você escreve, o código de um programa deve ser como uma redação

[code]

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
class Main
{
public static void main(String[] args) throws IOException
{

	Scanner scanner = new Scanner(new FileReader("arquivo.txt"));

	File arquivo = new File("inserts.txt");  
	FileWriter fw = new FileWriter(arquivo);  
	BufferedWriter bw = new BufferedWriter(fw);  
	
	//percorre o arquivo linha a linha
	while(scanner.hasNext()) 
	{	
		String[] parametros = scanner.nextLine().split("\\|"); //pega a linha e divide conforme o delimitador  
		System.out.println(parametros[0]);  
		System.out.println(parametros[1]);  
		System.out.println(parametros[2]);             

		//a escrita do insert é para cada linha lida do arquivo de entrada
		bw.write("insert into tabela (nome, cidade, idade) values ("+parametros[0]+","+parametros[1]+","+parametros[2]);  
		bw.flush();
	}
	scanner.close(); //o fechamendo do scanner ocorre quando nao vou mais utilizalo
	bw.close();
	fw.close();
}

}
[/code][/quote]
Rsrsrsrs eu esperava que ele chegasse a essa conclusão sozinho, por isso não postei como deveria ficar o código :slight_smile:

public static void main(String[] args) throws IOException
	{

		Scanner scanner = new Scanner(new FileReader("arquivo.txt"));
	
        File arquivo = new File("inserts.txt");
        FileWriter fw = new FileWriter(arquivo);
        BufferedWriter bw = new BufferedWriter(fw);
        
        
		
		while(scanner.hasNext())
		{	

			 	String[] parametros = scanner.nextLine().split("\\|");    
	            System.out.println(parametros[0]);    
	            System.out.println(parametros[1]);    
	            System.out.println(parametros[2]);
	            bw.write("insert into tabela (nome, cidade, idade) values ("+parametros[0]+","+parametros[1]+","+parametros[2]+");");
	    }
		
		bw.close();

	}

Agora rodou perfeitamente!

public static void main(String[] args) throws IOException
	{

		Scanner scanner = new Scanner(new FileReader("arquivo.txt"));
	
        File arquivo = new File("inserts.txt");
        FileWriter fw = new FileWriter(arquivo);
        BufferedWriter bw = new BufferedWriter(fw);
        
        
		
		while(scanner.hasNext())
		{	

			 	String[] parametros = scanner.nextLine().split("\\|");    
	            System.out.println(parametros[0]);    
	            System.out.println(parametros[1]);    
	            System.out.println(parametros[2]);
	            bw.write("insert into tabela (nome, cidade, idade) values ("+parametros[0]+","+parametros[1]+","+parametros[2]+");");
	    }
		
		bw.close();

	}

Agora rodou perfeitamente! [/quote]
Marque o tópico como resolvido :slight_smile: