Dúvidas JFilechooser

6 respostas
marceloamigo

Pessoal
Quero pegar um resultset, e para cada registro, criar um arquivo
minha dificuldade esta sendo atribuir a string caminho o seguinte valor:
diretorio selecionado no componente jfilechooser + campo codigo do resultset formatado com 8 digitos + .txt

public void gerarArquivos(){
        Conexao conn = new Conexao();
        try {
            rs =conn.obterRs("select * from Produtos order by Codigo");
            while(rs.next()){
                String caminho = null;                
                File arquivoTxt = new File(caminho);                                                       
            }
        } catch (SQLException ex) {
            Logger.getLogger(Exportacao.class.getName()).log(Level.SEVERE, null, ex);
        }
}

alguma dica???

6 Respostas

marceloamigo
public void gerarArquivos() throws IOException{
        Conexao conn = new Conexao();        
        try {

            rs =conn.obterRs("select * from Produtos order by Codigo");
            while(rs.next()){
                String caminho = jflCaminho.getName(jflCaminho.getSelectedFile()); //aqui esta dando erro
                caminho.concat("\");
                caminho.concat(rs.getString("Codigo")); //eu gostaria de formatar esse campo assim (0000000)
                caminho.concat(".txt");
                System.out.println(caminho);
                try {
                    FileWriter arquivoTxt = new FileWriter(caminho);                    
                    arquivoTxt.append(rs.getString("Codigo"));
                    arquivoTxt.close();                           
                } catch (IOException ex) {
                    Logger.getLogger(Exportacao.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(Exportacao.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
M

O diretório selecionado pelo JFileChooser pode ser retornado pelo método getSelectedFile() e o caminho completo pode ser resgatado pelo método getAbsolutePath(). Algo como:

String caminho = seuFileChooser.getSelectedFile().getAbsolutePath() + rs.getString("colunaQueVoceQuerResgatar") + ".txt";
marceloamigo
String caminho =  jflCaminho.getSelectedFile().getAbsolutePath() + rs.getString("Codigo") + ".txt";

Não funcionou

M

Dê um System.out.println na variável caminho. Talvez falte uma barra.

marceloamigo

Ficou assim
só vou ter que fazer um tratamento para quando o usuário escolher a raiz, pois fica duas contra-barras no caminho e da erro(explo c:\00000001.txt)

ResultSet rs =conn.obterRs("select * from Produtos order by Codigo");
            while(rs.next()){
                String caminho = jflCaminho.getSelectedFile().getAbsolutePath() + "\" + String.format("%1$08d", Integer.parseInt(rs.getString("codigo"))) + ".txt";
                try {
                    FileWriter arquivoTxt = new FileWriter(caminho);
                    arquivoTxt.append(String.format("%1$08d", Integer.parseInt(rs.getString("codigo"))));
                   //aqui vai o restante dos campos
                    arquivoTxt.close();                           
                } catch (IOException ex) {
                    Logger.getLogger(Exportacao.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
M

Pode usar barra comum mesmo no Windows:

String caminho = jflCaminho.getSelectedFile().getAbsolutePath() + "/" + String.format("%1$08d", Integer.parseInt(rs.getString("codigo"))) + ".txt";

Uma pergunta? O campo código da sua tabela armazena que tipo de dados? Se for inteiro, pode usar assim para ficar mais simples:

String caminho = jflCaminho.getSelectedFile().getAbsolutePath() + "/" + String.format("%1$08d", rs.getInt("codigo")) + ".txt";
Criado 18 de fevereiro de 2009
Ultima resposta 18 de fev. de 2009
Respostas 6
Participantes 2