Estou fazendo um trabalho em que o usuário deve escolher uma pasta por aquela janelinha padrão de abertura de arquivo e então fazer um processamento sobre cada arquivo dentro dessa pasta.
Minhas principais dúvidas são:
1 - como mandar pegar uma pasta (ao invés de um arquivo)
2 - como abrir CADA arquivo dentro desta pasta.
importjava.io.File;importjavax.swing.JFileChooser;/* * Janela.java * * Created on 13 de Maio de 2008, 19:35 *//** * * @author wesley */publicclassJanelaextendsjavax.swing.JFrame{privateJFileChooserjFCSeletor;/** Creates new form Janela */publicJanela(){initComponents();}/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */// <editor-fold defaultstate="collapsed" desc=" Código Gerado "> privatevoidinitComponents(){jBtnSelecionar=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jBtnSelecionar.setText("SelecionarArquivos");jBtnSelecionar.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jBtnSelecionarActionPerformed(evt);}});org.jdesktop.layout.GroupLayoutlayout=neworg.jdesktop.layout.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(layout.createSequentialGroup().add(108,108,108).add(jBtnSelecionar).addContainerGap(167,Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(layout.createSequentialGroup().add(134,134,134).add(jBtnSelecionar).addContainerGap(143,Short.MAX_VALUE)));pack();}// </editor-fold> privatevoidjBtnSelecionarActionPerformed(java.awt.event.ActionEventevt){jFCSeletor=newJFileChooser();jFCSeletor.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//selecione apenas diretoriosintintEvento=jFCSeletor.showOpenDialog(null);//captura o evento que foi executado no FileChooserif(intEvento==JFileChooser.APPROVE_OPTION){//verifica se o diretorio foi selecionadoFilediretorio=jFCSeletor.getSelectedFile();listFiles(diretorio);}}privatevoidlistFiles(Filedir){File[]listFiles=dir.listFiles();for(Filefile:listFiles){System.out.println(file.getName());//faz o que quiser com o arquivo//file.delete(); //apaga todos os arquivos do diretorio}}/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newJanela().setVisible(true);}});}// Declaração de variáveis - não modifique privatejavax.swing.JButtonjBtnSelecionar;// Fim da declaração de variáveis }
Qualquer dúvida estamos ai.
abraços!
G
gzofera
procure aki no guj por leitura recursiva, algo parecido uma vez tive esse problema, se tivesse o codigo aki te passava
vlws
E
eclipso
Usando recusividade, você pode fazer um método “lerCaminho”, por exemplo, passando um File como parâmetro…A primeira coisa que você faz é testar se ele é um diretório. Caso o resultado seja TRUE você obtém a lista de File´s filhos dele e sumete cada um desses File ao mesmo método “lerCaminho”. Caso seja FALSE (ou seja, o File é um arquivo) você o lê e processa como quiser…Algo mais ou menos assim.