Bonjour,


Voila je suis en train de mettre en place mon logiciel FTP, qui se connectera a un FTP et qui permettra de récupéré des fichiers ou des dossiers. Je me heurte a un problème qui est le suivant :

- Comment différencié un répertoire et un fichier ?

Car évidement le FTP contient des fichiers mais aussi des répertoire, j'aimerais pouvoir juste récupérer un fichier, ou un dossier complet.

Code des méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
 
/**
 * @author trist06
 */
public class Ftp {
 
    LinkedHashMap lc = new LinkedHashMap();
    FTPClient ftp = new FTPClient();
 
.
.
.
    public LinkedHashMap listage() {
        try {
            // List the files in the directory
            FTPFile[] files = ftp.listFiles();
            String[] list = ftp.listNames();
            for (int i = 0; i < files.length; i++) {
                String name = files[i].getName();
                lc.put(i, name);
            }
            System.out.println("Nombre de Fichier au total " + files.length);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return lc;
    }
 
    public void changedir(String fic){
        try {
            ftp.changeWorkingDirectory(fic);
        } catch (IOException ex) {
            Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void download(String destinationFolder, String fic) {
        try {
            FTPFile[] files = ftp.listFiles();
            String[] list = ftp.listNames();
            for (int i = 0; i < files.length; i++) {
                File file = new File(destinationFolder + File.separator + files[i].getName());
                FileOutputStream fos = new FileOutputStream(file);
                ftp.retrieveFile(files[i].getName(), fos);
                fos.close();
            }
            } catch  (Exception e) {
            e.printStackTrace();
        }
    }
}
Code de l'interface graphique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
    private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {                                    
        select = (String) jList1.getSelectedValue();
        jLabel3.setText(select);
    }                                   
 
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        ftp.changedir(select);
        ftp.download(dirName, select);
    }

Merci par avance, j'utilise les librairies : commons-net-2.0