J'ai ce petit morceau de code ci-dessous qui télécharge un fichier dans Java, le code fonctionne correctement mais il reste longtemps pendant l'ouverture du flux de sortie.URLConnection lente à l'appel getOutputStream en utilisant une URL FTP
// open file to upload
InputStream filein = new FileInputStream("/path/to/file.txt");
// connect to server
URL url = new URL("ftp://user:[email protected]/dir/file.txt");
URLConnection urlConn = url.openConnection();
urlConn.setDoOutput(true);
// write file
// HANGS FROM HERE
OutputStream ftpout = urlConn.getOutputStream();
// TO HERE for about 22 seconds
byte[] data = new byte[1024];
int len = 0;
while((len = filein.read(data)) > 0) {
ftpout.write(data,0, len);
}
// close file
filein .close();
ftpout.close();
Dans cet exemple, la méthode URLConnection.getOutputStream() se bloque pendant environ 22 secondes avant de continuer normalement, le fichier est téléchargé avec succès. Dans ce cas, le fichier ne contient que 4 octets, juste un fichier texte avec le mot 'test' et le code se bloque avant le début du téléchargement, donc ce n'est pas parce qu'il prend le temps de télécharger le fichier. Cela ne se produit que lorsque je me connecte à un serveur, lorsque j'essaie un autre serveur, c'est aussi rapide que je pourrais espérer, ce qui me laisse penser qu'il s'agit d'un problème de configuration du serveur auquel cas cette question peut être plus appropriée , cependant, si je télécharge à partir d'un client FTP (dans mon cas, FileZilla) cela fonctionne très bien donc il pourrait y avoir quelque chose que je peux faire avec le code pour résoudre ce problème.
Des idées?