2009-10-14 8 views
0

Quelqu'un peut-il me diriger vers un code Java qui peut télécharger un fichier via FTP. L'important est que si le FTP répond avec un message d'erreur, je dois l'obtenir. C'est parce que je dois être sûr que le fichier a été téléchargé avec succès.Le code de téléchargement FTP qui renvoie une réponse d'erreur du serveur

J'utilise le code suivant, mais il ne renvoie pas d'erreur si le téléchargement échoue.

import java.io.BufferedInputStream; 
import java.io.BufferedOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 

/** 
* This class is used to upload a file to a FTP server. 
* 
* @author Muthu 
*/ 
public class FileUpload 
{ 

    /** 
    * Upload a file to a FTP server. A FTP URL is generated with the 
    * following syntax: 
    * ftp://user:[email protected]:port/filePath;type=i. 
    * 
    * @param ftpServer , FTP server address (optional port ':portNumber'). 
    * @param user , Optional user name to login. 
    * @param password , Optional password for user. 
    * @param fileName , Destination file name on FTP server (with optional 
    *   preceding relative path, e.g. "myDir/myFile.txt"). 
    * @param source , Source file to upload. 
* @throws Exception 
    */ 
    public void upload(String ftpServer, String user, String password, 
     String fileName, File source) throws Exception 
    { 
     if (ftpServer != null && fileName != null && source != null) 
     { 
     StringBuffer sb = new StringBuffer("ftp://"); 
     // check for authentication else assume its anonymous access. 
     if (user != null && password != null) 
     { 
      sb.append(user); 
      sb.append(':'); 
      sb.append(password); 
      sb.append('@'); 
     } 
     sb.append(ftpServer); 
     sb.append('/'); 
     sb.append(fileName); 
     /* 
      * type ==> a=ASCII mode, i=image (binary) mode, d= file directory 
      * listing 
      */ 
     sb.append(";type=i"); 

     BufferedInputStream bis = null; 
     BufferedOutputStream bos = null; 
     try 
     { 
      URL url = new URL(sb.toString()); 
      URLConnection urlc = url.openConnection(); 

      bos = new BufferedOutputStream(urlc.getOutputStream()); 
      bis = new BufferedInputStream(new FileInputStream(source)); 

      int i; 
      // read byte by byte until end of stream 
      while ((i = bis.read()) != -1) 
      { 
       bos.write(i); 
      } 
     } catch (Exception e){ 
      System.out.println("error during file upload"); 
      throw e; 
     } 
     finally 
     { 
      if (bis != null) 
       try 
       { 
        bis.close(); 
       } 
       catch (IOException ioe) 
       { 
        ioe.printStackTrace(); 
       } 
      if (bos != null) 
       try 
       { 
        bos.close(); 
       } 
       catch (IOException ioe) 
       { 
        ioe.printStackTrace(); 
       } 
     } 
     } 
     else 
     { 
     System.out.println("Input not available."); 
     } 
    } 



     /** 
     * Download a file from a FTP server. A FTP URL is generated with the 
     * following syntax: 
     * ftp://user:[email protected]:port/filePath;type=i. 
     * 
     * @param ftpServer , FTP server address (optional port ':portNumber'). 
     * @param user , Optional user name to login. 
     * @param password , Optional password for user. 
     * @param fileName , Name of file to download (with optional preceeding 
     *   relative path, e.g. one/two/three.txt). 
     * @param destination , Destination file to save. 
     * @throws MalformedURLException, IOException on error. 
     */ 
     public void download(String ftpServer, String user, String password, 
      String fileName, File destination) throws MalformedURLException, 
      IOException 
     { 
      if (ftpServer != null && fileName != null && destination != null) 
      { 
      StringBuffer sb = new StringBuffer("ftp://"); 
      // check for authentication else assume its anonymous access. 
      if (user != null && password != null) 
      { 
       sb.append(user); 
       sb.append(':'); 
       sb.append(password); 
       sb.append('@'); 
      } 
      sb.append(ftpServer); 
      sb.append('/'); 
      sb.append(fileName); 
      /* 
       * type ==> a=ASCII mode, i=image (binary) mode, d= file directory 
       * listing 
       */ 
      sb.append(";type=i"); 
     BufferedInputStream bis = null; 
     BufferedOutputStream bos = null; 
     try 
     { 
      URL url = new URL(sb.toString()); 
      URLConnection urlc = url.openConnection(); 

      bis = new BufferedInputStream(urlc.getInputStream()); 
      bos = new BufferedOutputStream(new FileOutputStream(
        destination.getName())); 

      int i; 
      while ((i = bis.read()) != -1) 
      { 
       bos.write(i); 
      } 
     } 
     finally 
     { 
      if (bis != null) 
       try 
       { 
        bis.close(); 
       } 
       catch (IOException ioe) 
       { 
        ioe.printStackTrace(); 
       } 
      if (bos != null) 
       try 
       { 
        bos.close(); 
       } 
       catch (IOException ioe) 
       { 
        ioe.printStackTrace(); 
       } 
     } 
     } 
     else 
     { 
     System.out.println("Input not available"); 
     } 
    } 
} 

Toute aide serait grandement appréciée.

Merci.

Répondre

Questions connexes