Java io

5 respostas
A

[color=blue]

Olá pessoal!
Estou tentando salvar os dados de uma JTable em um arquivo txt, mas nunca utilizei a classe pois estou iniciando meus estudos. Tentei fazer como segue, mas não estou conseguindo. Alguém pode me ajudar?
[/color]

public void salvar(){ class TestingPrintWriter { public void main(String[] args) throws Exception { PrintWriter writer = new PrintWriter( new File( "C:tabela.txt") ); writer.println(); for (int i=0; i<=jt_receita.getRowCount()-1; i++) writer.close();

5 Respostas

reinaldo558

"C:Tabela.txt" não é um caminho válido, tente "c:\tabela.txt" ou "c://tabela.txt"

Experimente isso:
import java.io.FileOutputStream;
import java.io.PrintStream;


public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 FileOutputStream arquivoTexto;
			PrintStream arquivo;
			try{
				arquivoTexto = new FileOutputStream("c://tabela.txt");
				arquivo = new PrintStream(arquivoTexto);
				
				for(int i = 0; i < 100; i++){
					arquivo.print("Linha: "+ i +"\n");
				}
				
				arquivo.close();
				
			}catch (Exception e) {
				e.printStackTrace();
			}
	}

}

nota: Tem que ser "c://tabela.txt" se fizer "c:\tabela" a jvm entende o \t como comando de tabulação e da erro em tempo de execução.

Eder_Peixoto

Uma dica: ao invés de especificar diretamente o separador de diretórios ("/" ou “”), use a constante que existe na classe File, que é File.separator.

A

[color=green]

Cara, acho que isso aqui é mais simples:
[/color]

//Esta linha cria um objeto PrintWriter, e, consequentemente, um arquivo txt vazio no C da máquina:
PrintWriter writer = new PrintWriter( new File( "C:\arquivo.txt") );
//Agora o arquivo será preenchido com 2 linhas:
writer.println ("Primeira Linha");
writer.println ("Segunda Linha");

//Libera o arquivo da memória:
writer.close();

Mas não estou conseguindo aplicar o for para pegar todos os dados da JTable. Alguém me passou uma dica que diz que o que vai dentro do for é o que repete, não estou entendendo, como assim repete? Como faço?
Pode ser assim?

for (int i=0; i<=jt_receita.getRowCount()-1; i++)
ViniGodoy

Não entendo essa mania do pessoal de tentar ir adiante num tema, sem entender primeiro o básico.
Primeiro de tudo, você deve aprender como o JTable funciona. Você tem a tabela, e uma classe que é um modelo de dados, que diz a tabela o que desenhar. Idealmente, você deveria ter feito o seu próprio modelo de dados, baseado em suas classes de negócio.

O que vai para arquivo são as estruturas contidas nesse modelo. É muito mais performático fazer dessa forma, e também evita que você misture a camada de apresentação (o JTable) com a camada de negócio.

Dê uma lida nos seguintes artigos para entender melhor o funcionamento da JTable:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472

Faça isso o mais rápido possível. Usar a JTable de maneira incorreta gera uma série de dificuldades e dores de cabeça totalmente desnecessárias.

A

Valeu pela dica, agora quebra meu galho.
Como faço para pegar os dados do JTable; com for.
Já quebrei a cabeça e não tem jeito. Se for de um JTextfield, não há problema, mas JTable não estou conseguindo. Se funcionou para aplicar a soma dos valores da coluna, por que isso não funciona para salvar esses valores?

for (int i=0; i<=jt_receita.getRowCount()-1; i++)
Criado 7 de julho de 2009
Ultima resposta 9 de jul. de 2009
Respostas 5
Participantes 4