2011-06-29 17 views
23

Utworzono funkcję pobierania plików z serwera FTP, do którego mam dostęp. Jak przesłać pliki z powrotem na serwer FTP?Jak przesłać plik na serwer FTP?

Poniżej jest metoda download_files użyłem:

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

możliwy duplikat [jak zaimplementować FTP przy użyciu java?] (Http://stackoverflow.com/questions/4720539/how-to-implement-ftp-using-java) – CoolBeans

+0

Mam wątpliwości, czy powyższy kod (pliki do pobrania z ftp) działa w systemie Android? –

Odpowiedz

43

Użyj klasy FTPClient z biblioteki Apache Commons Net.

Jest to urywek z przykładu:

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(); 
    } 
} 

urywek pobranej od http://www.kodejava.org/examples/356.html

3

Użyłem pakiet EDT FTP, darmowa GPL biblioteki dla FTP w Javie: http://www.enterprisedt.com/products/edtftpj/overview.html

Tutaj to przykład kodu, z klasy Demo.java, którą dostarczyli:

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(); 
Powiązane problemy