Queria saber se é possível copiar arquivos de uma pasta e colar na pasta que o usuário especificar através do JFileChooser? Até agora consegui mostrar os arquivos no que tem que salvar no seletor, porém não sei copiá-los na pasta que o usuário quer. Alguma ideia?
Meu código até agora:
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Salvar Arquivos");
fc.setDialogType(JFileChooser.SAVE_DIALOG);
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
File diretorio = new File("\\CaptureTmp/Temp/");
File[] arquivos = diretorio.listFiles();
fc.setSelectedFiles(arquivos);
int arq = fc.showSaveDialog(this);
if (arq == JFileChooser.APPROVE_OPTION) {
} else {
repaint();
}
Seria interessante mesmo saber disso, estou com a mesma necessidade.
Queria poder copiar os arquivos selecionados e mover para outra pasta pelo JFileChooser.
Caso não seja possível, talvez dê para utilizar uma classe de manipulação de arquivos, pegar o caminho desses múltiplos arquivos que foram selecionados (também não sei como… se for apenas um arquivo, basta dar um get.SelectedFile.getPath() que consegue pegar o caminho… mas com o getSelectedFiles não é possível usar o getPath()), jogar numa lista e depois fazer a cópia dos arquivos por meio dessa classe.
bom se não tem como pegar todos os arquivos dessa maneira , por que não tenta toda vez que for selecionado 1 arquivo jogar dentro de 1 array? E depois percorre esse array e vai jogando em outro destino :thumbup:
então cara, mas o getSelectedFiles() retorna uma lista. No caso você poderia pegar essa lista e jogar no destino que você precisa. Eu não entendi porque você quer pegar o caminho dos arquivos selecionados, no caso para que ele serviria se pelo que eu entendo você só precisa dos arquivos para jogar em outro destino.
for(int i=0; i < listFiles.length; i++){
FileInputStream origem = new FileInputStream(listFiles[i].getPath());
FileOutputStream destino = new FileOutputStream(Path+listFiles[i].getName());
IOUtils.copy(origem,destino);
}
[/code][/quote]
Cara, tentei fazer com seu código, mas o “IOUtils” não reconheceu o “copy”. De resto tá beleza, o que você fez?
Mas você chegou a pegar o jar da IOUtils? Qual é a versão dela?
Eu peguei a commons-io-2.3.jar (jdk 1.6)…
Depois disso consegui utilizar a IOUtils…
Esse Path é uma String com o caminho da pasta onde se quer salvar…
E o listFiles[i] corresponde a cada arquivo que fica gravado nessa lista de arquivos. Quando se dá o getName, ele captura exatamente o nome do arquivo e depois fica fácil gravar com o mesmo nome em outra pasta.
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Salvar Arquivos");
fc.setDialogType(JFileChooser.SAVE_DIALOG);
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int arq = fc.showSaveDialog(this);
if (arq == JFileChooser.APPROVE_OPTION) {
File dir = fc.getSelectedFile();
CopiarArquivos ca = new CopiarArquivos();
ca.copiarArquivos(dir.toString());
} else {
repaint();
}
Método:
public void copiarArquivos(String caminho) {
this.caminho = caminho;
File dir = new File("\\CaptureTmp/Temp");
File[] listarArquivos = dir.listFiles();
for (int x = 0; x < listarArquivos.length; x++) {
try {
this.origem = new FileInputStream(listarArquivos[x]);
this.destino = new FileOutputStream(caminho + "/" + listarArquivos[x].getName());
IOUtils.copy(this.origem, this.destino);
this.origem.close();
this.destino.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex, "Ocorreu um erro!", JOptionPane.ERROR_MESSAGE);
}
}
}