2011-06-29 63 views
23

我创建了一个从我有权访问的FTP服务器下载文件的功能。我如何将文件上传回FTP服务器?如何将文件上传到FTP服务器?

下面是download_files方法我用:

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

可能重复[如何使用java实现FTP?](http://stackoverflow.com/questions/4720539/how-to-implement-ftp-using-java) – CoolBeans

+0

我有疑问,这是上面的代码(从ftp下载文件)将工作在Android? –

回答

43

使用Apache Commons Net库中的FTPClient类。

这是一个例子的代码片段:

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

段从http://www.kodejava.org/examples/356.html

3

我已经使用了EDT FTP包,在Java中的FTP一个免费的GPL库中提取的:http://www.enterprisedt.com/products/edtftpj/overview.html

这里是他们提供的Demo.java类的代码示例:

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