Arquivo texto com problema [RESOLVIDO]

Boa tarde a todos, sou novo no GUJ

Estou fazendo um código que pega o usuário e a senha digitada e jogo para um arquivo texto chamado auto.t5
a logica aplicada é se o arquivos existir ele deve deletar depois cria , senão somente criar
Essa parte Funciona normalmente…

outra parte é o caminho desses arquivos.
ex: tenho outro arquivo texto chamado caminhos.t5
nele contem o endereço de onde vai ser gravado os auto.t5

e eu quero alterar esse arquivo pelo programa, e apos alterar ele gravar em arquivo texto de novo.
mais ele não exclui meu arquivo

resumindo…

Meu Codigo exclui um arquivo txt, mais outro não

estarei a disposição para que tiver interesse em me ajudar

[code]package App;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.util.Arrays;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

@SuppressWarnings(“serial”)
public class AlterarAutoT5 extends JFrame {
private String usuario, senha, caminhos = “C:\TECINCO\Caminhos.t5”;
private JTextField jtfUsuario, jtfSenha, jtfEdit;
private JLabel jlUsauario, jlSenha;
private JButton jbGravar, jbOk, jbSalvaLista;
@SuppressWarnings(“unused”)
private File arquivo;
String linhas[];
Container tela;
private int cont, indice;
JList lCaminhos;
JScrollPane scroll;

public AlterarAutoT5() {
	super("Senha do dia");
	setLayout(null);
	setSize(326, 540);
	setVisible(true);
	tela = getContentPane();
	setLocationRelativeTo(null);

	criacaoTela();

	lCaminhos.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
	lCaminhos.addMouseListener(new MouseAdapter() {

//acao dos 2 cliques na jlist

		public void mouseClicked(MouseEvent e) {
			if (e.getClickCount() == 2) {
				jbSalvaLista.setVisible(false);
				indice = lCaminhos.locationToIndex(e.getPoint());
				alterarLista(indice);
			}
		}
	});


	jtfEdit.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			acaoOk();
		}
	});

	jtfSenha.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			acaoGravar();
		}
	});

	jbGravar.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			acaoGravar();
		}
	});

// esse é o botao que manda gravar caminhos.t5, ele gravar mais nao excluir o arquivo texto ja que existe

	jbSalvaLista.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			String texto;
			File arquivo2 = new File(caminhos);

			DeletarArquivo(arquivo2);

			try {
				for (int i = 0; i < linhas.length; i++) {
					FileOutputStream fos = new FileOutputStream(arquivo2,
							true);
					texto = "" + linhas[i]
							+ System.getProperty("line.separator");
					System.out.println(texto);
					fos.write(texto.getBytes());
					fos.close();
					jbSalvaLista.setVisible(false);
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
	});

	jbOk.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			acaoOk();
		}
	});
}

protected void acaoOk() {
	linhas[indice] = jtfEdit.getText();
	jtfEdit.setVisible(false);
	jbOk.setVisible(false);
	jtfSenha.requestFocus();
	jtfSenha.selectAll();
	jbSalvaLista.setVisible(true);

}

protected void alterarLista(int indice) {
	jtfEdit.setText(linhas[indice]);
	jtfEdit.setVisible(true);
	jbOk.setVisible(true);
	jtfEdit.requestFocus();
	jtfEdit.selectAll();
}

private void acaoGravar() {
	usuario = jtfUsuario.getText().trim().toUpperCase();
	senha = jtfSenha.getText().trim().toUpperCase();
	try {
		for (cont = 0; cont < linhas.length; cont++) {
			File arquivo = new File(linhas[cont]);
			DeletarArquivo(arquivo);
			FileOutputStream fos = new FileOutputStream(arquivo, true);
			String texto = "" + usuario
					+ System.getProperty("line.separator");
			fos.write(texto.getBytes());
			texto = "" + senha;
			fos.write(texto.getBytes());
			fos.close();
		}
		JOptionPane.showMessageDialog(null, "Configurado com sucesso",
				"Obrigado!", JOptionPane.INFORMATION_MESSAGE);
		dispose();
	} catch (Exception ee) {
		ee.printStackTrace();
	}
}

public String[] file2Vector(String file, boolean trim) {
	String[] ret = new String[50];
	LineNumberReader ln1 = null;
	String s = "";
	try {
		ln1 = new LineNumberReader(new FileReader(file));
		for (int i = 0; i < ret.length; i++) {
			s = ln1.readLine();
			ret[i] = s;
		}
	} catch (Exception ex) {
		System.err.println("Erro");
		ex.printStackTrace();
	}
	return ret;
}

public static void main(String[] args) {
	AlterarAutoT5 app = new AlterarAutoT5();
	app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private void criacaoTela() {
	jlUsauario = new JLabel("Usuario:");
	jlSenha = new JLabel("Senha:");
	jtfUsuario = new JTextField("TECINCO");
	jtfSenha = new JTextField();
	jtfEdit = new JTextField();
	jtfEdit.setVisible(false);
	jbOk = new JButton("quer gravar ?");
	jbOk.setVisible(false);
	jbGravar = new JButton("Gravar");
	jbSalvaLista = new JButton("Gravar Lista");
	linhas = file2Vector(caminhos, false);
	Arrays.sort(linhas);
	lCaminhos = new JList(linhas);
	scroll = new JScrollPane(lCaminhos);

	tela.add(jlSenha);
	tela.add(jlUsauario);
	tela.add(jtfSenha);
	tela.add(jtfUsuario);
	tela.add(jbGravar);
	tela.add(jbOk);
	tela.add(jtfEdit);
	tela.add(scroll);
	tela.add(jbSalvaLista);

	jlSenha.setBounds(93, 40, 60, 20);
	jlUsauario.setBounds(93, 10, 60, 20);
	jtfSenha.setBounds(153, 40, 80, 20);
	jtfUsuario.setBounds(153, 10, 80, 20);
	jtfEdit.setBounds(10, 175, 300, 20);
	jbOk.setBounds(93, 150, 140, 20);
	jbGravar.setBounds(93, 70, 140, 30);
	jtfSenha.requestFocus();
	scroll.setBounds(10, 200, 300, 300);
	jbSalvaLista.setBounds(63, 150, 200, 20);
	jbSalvaLista.setVisible(false);
}

protected void DeletarArquivo(File arquivo) {

	try {
		arquivo.createNewFile();

		boolean sucesso = arquivo.delete();

		if (sucesso) {
		} else {
			JOptionPane.showMessageDialog(null,
					"Arquivo não existe ou não foi apagado");

		}
	} catch (IOException e) {
		e.printStackTrace();
	}

}

}
[/code]

posta pra gente ai um exemplo do caminhos.t5 e do auto.t5…

Auto.T5 contem somente 2 linhas, sendo:

USUÁRIO
SENHA

Caminhos.T5 possui os diretórios de onde o auto.t5 sera gravado

C:\TECINCO\auto.t5
C:\TECINCO\Pasta1\auto.t5
C:\TECINCO\Pasta2\auto.t5

são 50 diretórios que eu defini no código

a tela aqui abre toda cinza…

com o seguinte erro no console:

Exception in thread "main" java.lang.NullPointerException at java.lang.String.compareTo(Unknown Source) at java.lang.String.compareTo(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at AlterarAutoT5.criacaoTela(AlterarAutoT5.java:187) at AlterarAutoT5.&lt;init&gt;(AlterarAutoT5.java:43) at AlterarAutoT5.main(AlterarAutoT5.java:171)

ele deu erro para você no método

criacaoTela

o motivo desse nullpointer ai era na linha:

Arrays.sort(linhas);

ai vc conseguiu rolar com essa linha??? eu comentei ela… e passou normal…
agora vou verificar o motivo do tópico…

Normalmente, Estranho, ele estava ordenando meu vetor apenas

Depois de alguns ajustes aqui, acho que coloquei o programa para rodar…

Me parece, que está faltando um Close em um reader ali…

public String[] file2Vector(String file, boolean trim) throws IOException {
        String[] ret = new String[50];
        LineNumberReader ln1 = null;
        String s = "";
        try {
            ln1 = new LineNumberReader(new FileReader(file));
            for (int i = 0; i < ret.length; i++) {
                s = ln1.readLine();
                ret[i] = s;
            }
        } catch (Exception ex) {
            System.err.println("Erro");
            ex.printStackTrace();
        } finally {
        	ln1.close();
        }
        return ret;
    }

coloquei um finally { ln1.close(); } e parece que deu certo… veja ai.

Valeu

– EDIT –

Tive também que colocar aquele “throws IOException” e um “try” na chamada deste método…

brother… não consegui entender direito como funciona essa app…

tem 2 botões o “gravar” e o “Quer gravar?” qual a diferença…???

não entendi o fluxo do que deve acontecer…
tu digita um usuario e senha… e ele deve alterar em todos os arquivos da lista certo???
mas para alterar nesse caso ele deleta e cria de novo???

[quote=haroflow]Depois de alguns ajustes aqui, acho que coloquei o programa para rodar…

Me parece, que está faltando um Close em um reader ali…

public String[] file2Vector(String file, boolean trim) throws IOException {
        String[] ret = new String[50];
        LineNumberReader ln1 = null;
        String s = "";
        try {
            ln1 = new LineNumberReader(new FileReader(file));
            for (int i = 0; i < ret.length; i++) {
                s = ln1.readLine();
                ret[i] = s;
            }
        } catch (Exception ex) {
            System.err.println("Erro");
            ex.printStackTrace();
        } finally {
        	ln1.close();
        }
        return ret;
    }

coloquei um finally { ln1.close(); } e parece que deu certo… veja ai.

Valeu

– EDIT –

Tive também que colocar aquele “throws IOException” e um “try” na chamada deste método…
[/quote]

aqui funcionou o/*

Realmente funcionou apos essa linha de comando,

agradeço a todos…

Obrigado