2011-06-29 21 views
23

Creé una función para descargar archivos de un servidor FTP al que tengo acceso. ¿Cómo volvería a subir los archivos al servidor FTP?¿Cómo se sube un archivo a un servidor FTP?

A continuación se muestra el método download_files i utilizado:

public static void download_files(String un, String pw, String ip, String dir, String fn, String fp){ 

    URLConnection con; 
    BufferedInputStream in = null; 
    FileOutputStream out = null; 

    try{ 
     URL url = new URL("ftp://"+un+":"+pw+"@"+ip+"/"+dir+"/"+fn+";type=i"); 
     con = url.openConnection(); 
     in = new BufferedInputStream(con.getInputStream()); 
     out = new FileOutputStream(fp+fn); 

     int i = 0; 
     byte[] bytesIn = new byte[1024]; 

     while ((i = in.read(bytesIn)) >= 0) { 
      out.write(bytesIn, 0, i); 
     } 

    }catch(Exception e){ 
     System.out.print(e); 
     e.printStackTrace(); 
     System.out.println("Error while FTP'ing "+fn); 
    }finally{ 
     try{ 
      out.close(); 
      in.close(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
      System.out.println("Error while closing FTP connection"); 
     } 
    } 
} 
+0

posible duplicado de [cómo implementar FTP usando java?] (Http://stackoverflow.com/questions/4720539/how-to-implement-ftp-using-java) – CoolBeans

+0

Tengo una duda, ¿este código anterior (Descargar archivos desde ftp) funcionará en Android? –

Respuesta

43

Utilice la clase FTPClient de la biblioteca Apache Commons Net.

Este es un fragmento con un ejemplo:

FTPClient client = new FTPClient(); 
FileInputStream fis = null; 

try { 
    client.connect("ftp.domain.com"); 
    client.login("admin", "secret"); 

    // 
    // Create an InputStream of the file to be uploaded 
    // 
    String filename = "Touch.dat"; 
    fis = new FileInputStream(filename); 

    // 
    // Store file to server 
    // 
    client.storeFile(filename, fis); 
    client.logout(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    try { 
     if (fis != null) { 
      fis.close(); 
     } 
     client.disconnect(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Fragmento tomado de http://www.kodejava.org/examples/356.html

0

Tome un vistazo a apache-commons-net tienen un FTP algunas herramientas que pueden ayudarle a cabo!

3

He utilizado el paquete EDT FTP, una biblioteca GPL libre para FTP en Java: http://www.enterprisedt.com/products/edtftpj/overview.html

Aquí es un ejemplo de código, de la clase Demo.java que proporcionan:

ftp = new FTPClient(); 
ftp.setRemoteHost("hostname"); 

// connect 
ftp.connect(); 

// login 
ftp.login("user", "password"); 

// set up passive ASCII transfers 
ftp.setConnectMode(FTPConnectMode.PASV); 
ftp.setType(FTPTransferType.ASCII); 

// get directory and print it to console    
String[] files = ftp.dir(".", true); 
for (int i = 0; i < files.length; i++) 
    log.debug(files[i]); 

// copy file to server 
ftp.put("test.txt", "test.txt"); 

// copy file from server 
ftp.get("test.txt" + ".copy", "test.txt"); 

// delete file from server 
ftp.delete("test.txt"); 

// Shut down client     
ftp.quit(); 
Cuestiones relacionadas