Problemas para imprimir em txt

Olá Galera…

Dêem uma olhada nos códigos abaixo e me ajudem a resolver meu problema…por favor.

Primeiramente queria esclarecer detalhes do problema. Tenho duas Classes, a primeira abre o arquivo txt e a segunda possui métodos que imprimim nesse txt.

AbrirArquivo.java

public class AbrirArquivo {

static PrintWriter saida;

    public AbrirArquivo() {
    }
    
    public static void abrir(){//é static pois vai ser usada em outro JFrame.
    
    PrintWriter saida = new PrintWriter("c:/saidas(txt)/teste.txt");
     
                 if(int i=0;i<10;i++){
                          Imprimir.recado();
                          Imprimir.mensagem();
                 } 
     
    } 

}

Imprimir.java

public class Imprimir extends AbrirArquivos {

    public Imprimir() {
    }
    
    public static void recado(){ 
       saida.println("Testando...recado"); 
    } 

    public static void mensagem(){ 
       saida.println("Testando...mensagem"); 
    }
}

Queria saber qual o Problema ao se Fazer isso…

Me ajudem…por favor…

Grato,
Semsar

Boa noite.

Se for possível, você poderia iniciar seus estudos utilizando o Livro Java como Programar. Ele é ótimo, possui vários exemplos práticos e dá uma visão geral sobre o que é possivel fazer com java.


Algumas observações básicas quanto a seu código.

Aqui você declararou um atributo estático, e o mesmo não está instanciado, ou seja está nulo.

Logo abaixo, dentro do método abrir você declarou outro atributo “saida”

Veja,

PrintWriter saida = new PrintWriter(“c:/saidas(txt)/teste.txt”)

Neste caso, apesar das duas variáveis possuirem o mesmo nome, a variável “saida” que está dentro do método não tem nenhuma relação com a váriavel “saida” declarada na classe.

Se você guiser fazer uma referência ao um atributo da classe basta fazer o seguinte.

this.nomeAtributo = new NomeObjeto();

Outra, coisa, ao instanciar a classe PrintWriter é exigido que a exceção FileNotFoundException seja tratada.

Veja,

try{
PrintWriter saida = new PrintWriter(“c:/saidas(txt)/teste.txt”);
}catch (FileNotFoundException e) {
//tratamento da exceção
}

Este código, if(int i=0;i<10;i++){ …, está errado.

Acredito que você queria fazer uma estrutura de repetição utilizando um for, não!

ficaria assim,

for(int i = 0, i < 10, i++){
//código
}

ou ainda

for(int i = 0, j = 10; i < j; i++){
//código
}

Quando a herança feita, seria melhor buscar um artigo que trate mais especificamente do assunto.

Abaixo, eu disponibilizei dois métodos como exemplo que fazem a leitura de um arquivo, e a escrita em um arquivo.

[/code] public static void gravarArquivo(String path, String str)
throws LexoException {

	try {
		// cria o arquivo
		File f = new File(path);

		FileOutputStream arq = new FileOutputStream(f);

		// escreve no arquivo
		PrintStream ps = new PrintStream(arq);
		ps.println(str);
		ps.close();

		arq.flush();
		arq.close();
	} catch (FileNotFoundException e) {
		throw new LexoException("O caminho não existe.");
	} catch (IOException e) {
		throw new LexoException("Não foi possível criar o arquivo.");
	}
}

public static StringBuilder lerArquivo(String path) throws LexoException {
	try {
		StringBuilder result = new StringBuilder();
		File f = new File(path);
		FileInputStream arq = new FileInputStream(f);

		int caracterlido = arq.read();
		while (caracterlido != -1) {
			result.append((char) caracterlido);
			caracterlido = arq.read();
		}
		arq.close();

		return result;
	} catch (FileNotFoundException e) {
		throw new LexoException("Não foi possível encontrar o arquivo.");
	} catch (IOException ex) {
		throw new LexoException("Não foi possível abrir o arquivo.");
	}

}


Um abraço.