Bonjour,

le problème est le suivant:
je transfère et télécharge les fichiers de données de l'application que j'ai développée vers un serveur.
Quand on transfère le fichier vers le serveur:
- Avec JAVA7 et Win7 -> pas de problème
- sur un autre PC Win XP, JAVA7 -> Le fichier est corrompu. Apparemment, il manque un petit morceau du fichier stocké sur le serveur.

La bibliothèque utilisée est org.apache.commons.net.ftp

2 questions:
- avez-vous eu une expérience similaire, et si oui, qu'elle fut la solution ?
- Avez-vous des astuce pour pister une corruption de fichier ?

voici un extrait du code exécutant le transfert vers le serveur:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
 
private class CTeleTransmetFichier extends SwingWorker<Boolean, Integer>
{
  FTPClient clientFtp = null;
 
  @Override
  protected Boolean doInBackground() throws Exception {
    File fichierLocal;
    OutputStream fluxSortie = null;
    FileInputStream fichierLecture = null;
    byte [] tampon;
    long total_octets_a_lire, total_octets_lus;
    int octets_lus;
 
    resultatTransfert = false;
    sFichierImport = null;
 
    // Est-ce que le fichier local existe ?
    total_octets_a_lire = 0;
    fichierLocal = new File( sLocalDossier + File.separator + sLocalFichier );
 
    if( fichierLocal.exists())
      total_octets_a_lire = fichierLocal.length();
 
    if( total_octets_a_lire == 0 )
    {
      traiteErreurFtp( "FICHIER INEXISTANT OU LONGUEUR INDEFINIE", this.toString() + ": Fichier local inexistant ou sa longueur indéfinie " + sLocalDossier + File.separator + sLocalFichier );
      return false;
    }
 
 
    // Préparation de la connexion:
    clientFtp = new FTPClient();
 
    if( !preliminairesConnexionFTP( clientFtp ))
    {
      deconnexionFTP( clientFtp );
      return false;
    }
 
 
    // Préparation de la gestion des flux:
    try
    {
      fichierLecture = new FileInputStream( fichierLocal );
      fluxSortie = clientFtp.storeFileStream( sFtpFichier );
 
      if( !FTPReply.isPositivePreliminary( clientFtp.getReplyCode()))
      {
        traiteErreurFtp( "ECHEC de DIALOGUE avec le SERVEUR", this.toString() + ": " + clientFtp.getReplyString());
      }
      else
      {
        tampon = new byte[ 4096 ];
        octets_lus = -1;
        total_octets_lus = 0;
 
        // Transfert de fichier
        while(( octets_lus = fichierLecture.read( tampon )) != -1 )
        {
          fluxSortie.write( tampon, 0, octets_lus );
          total_octets_lus += octets_lus;
          publish( new Integer( ( int )( 100 * total_octets_lus / total_octets_a_lire )));
 
          if( isCancelled()) // L'utilisateur a appuyé sur le bouton STOP
          {
            C_Projet.logMessage.log( Level.INFO, "L'utilisateur a interrompu le flux de données pour " + sLocalFichier );
            break;
          }
        }
 
        // Arrivé ici signifie qu'il n'y a pas eu d'exception.
        resultatTransfert = true;
      }
    }
    catch( Exception e )
    {
      traiteErreurFtp( "ERREUR lors du TRANSFERT vers SERVEUR",  e.getMessage());
    }
 
    // Fermeture des flux avant interruption connexion:
    try
    {
      if( fichierLecture != null )
      {
        fichierLecture.close();
      }
    }
    catch( IOException ioE )
    {
      C_Projet.logMessage.log( Level.WARNING, "Erreur de la fermeture du flux de lecture " + ioE.getMessage());
    }
 
    try
    {
      if( fluxSortie != null )
      {
        fluxSortie.close();
      }
    }
    catch( IOException ioE )
    {
      C_Projet.logMessage.log( Level.WARNING, "Erreur de la fermeture du flux de sortie " + ioE.getMessage());
    }
 
    // Fermeture connexion:
    deconnexionFTP( clientFtp );
 
    return resultatTransfert;
  }
}
Merci par avance...