Copy files to their respective folders and subfolders

0

I have this java code in which I create a graphical interface that copies from one folder to another, now what I need is that when I copy a specific folder, you enter the files in their respective subfolders. How can I do it? I leave what I achieved so far. Thank you in advance.

import com.sun.javafx.logging.JFRInputEvent;
import org.apache.commons.io.FileUtils;
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class iniciar1 extends JFrame {
   JTextField origenFileTextField;
   JTextField destinoFileTextField;

public iniciar1() throws HeadlessException {
    setTitle("Transferir Archivos");
    JLabel sourceFileJLabel = new JLabel("Ruta: ");
    origenFileTextField = new JTextField();
    JButton origenFileChoserButton = new JButton("Archivos de 
  Actualizacion");
    origenFileChoserButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            JFileChooser jFileChooser = new JFileChooser();
            jFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
            int status = jFileChooser.showOpenDialog(iniciar1.this);
            if (status == JFileChooser.APPROVE_OPTION) {
                String selectedFilePath = jFileChooser.getSelectedFile().getAbsolutePath();
                origenFileTextField.setText(selectedFilePath);
            }
        }
    });
    JLabel destinoFileJLabel = new JLabel("Ruta: ");
    destinoFileTextField = new JTextField();
    JButton destinoFileChoserButton = new JButton("Carpeta de Proyectos");
    destinoFileChoserButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            JFileChooser jFileChooser = new JFileChooser();
            jFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
            int status = jFileChooser.showSaveDialog(iniciar1.this);
            if (status == JFileChooser.APPROVE_OPTION) {
                String selectedFilePath = jFileChooser.getSelectedFile().getAbsolutePath();
                destinoFileTextField.setText(selectedFilePath);
            }

        }
    });
    JButton botonCopiar = new JButton("Copiar");
    botonCopiar.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            File origenFile = new File(origenFileTextField.getText());
            File destinoFile = new File(destinoFileTextField.getText() );
            try {
              FileUtils.copyDirectory(origenFile,destinoFile);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    });
    setLayout(new GridLayout(3, 3, 5, 5));
    add(sourceFileJLabel);
    add(origenFileTextField);
    add(origenFileChoserButton);
    add(destinoFileJLabel);
    add(destinoFileTextField);
    add(destinoFileChoserButton);
    add(botonCopiar);
}

public static void main(String[] args) {
    iniciar1 copyFile = new iniciar1();
    copyFile.setSize(400, 150);
    copyFile.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    copyFile.setVisible(true);


}
private ArrayList<File> vector = new ArrayList<File>();
public ArrayList<File> listarTodo(File dir)
{
    vector.clear();
    listarT(dir);
    return vector;
}
private void listarT(File dir) {
    if (dir.isDirectory()) {
        vector.add(dir);
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++)
            listarT(new File(dir, children[i]));

    } else
        vector.add(dir);
}
private void copiarDirectorio(File directorio, String dirDestino) {
    String dirNombre = directorio.getName();
    File archDestino = new File(dirDestino + dirNombre);
    String rootFolder = "C:\";



    archDestino.mkdir();
    File [] porCopiar = directorio.listFiles();
    directorio.toPath();

    for(File file : porCopiar) {
        if(file.isDirectory()) {
            copiarDirectorio(file, archDestino.getAbsolutePath() + "/");
        }
         else {
            copiarDirectorio(file, archDestino.getAbsolutePath() + "/");
        }
    }
}

}

    
asked by IvanPeltzer1 17.07.2018 в 13:51
source

0 answers