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.
- ele só está mostrando um dos nomes guardados no arquivo txt, sendo que são dois.
- ele não tá concatenando os parametros e seus índices.
o que fazer?
[quote=jkrfabio]É que o código meu acima, está com erro.
- ele só está mostrando um dos nomes guardados no arquivo txt, sendo que são dois.
- ele não tá concatenando os parametros e seus índices.
o que fazer?[/quote]
- Dentro do While, já monte o insert e guarde dentro de uma lista para gerar o txt posteriormente.
- 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 
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 