1 package com.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 import java.net.SocketException; 10 import java.net.UnknownHostException; 11 12 import org.apache.commons.net.ftp.FTP; 13 import org.apache.commons.net.ftp.FTPClient; 14 import org.apache.commons.net.ftp.FTPFile; 15 16 public class FtpClientTest { 17 18 /** 19 * @param args 20 * @throws SocketException 21 * @throws IOException 22 * @throws UnknownHostException 23 */ 24 public static void main(String[] args) throws SocketException, IOException{ 25 // TODO Auto-generated method stub 26 String host = "192.168.0.107" ; 27 String user = "ftpClient" ; 28 String pass = "ftp123" ; 29 up(host, 21, user, pass) ; 30 } 31 static void load(String host ,int port ,String user ,String pass){ 32 FTPClient client = new FTPClient() ; 33 try { 34 client.connect(host,port) ; 35 boolean flag = client.login(user, pass) ; 36 if(flag){ 37 /** 38 * ASCII传输方式 假定用户正在拷贝的文件包含的简单ASCII码文本, 39 * 如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。 40 * 但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件,这回导致文件损坏 41 */ 42 //设置采用二进制传输方式下载,若采用默认的ascii传输方式下载可能导致文件损失 43 client.setFileType(FTP.BINARY_FILE_TYPE); 44 //切换当前目录到xx 45 client.changeWorkingDirectory("/20170806") ; 46 FTPFile[] ftpFiles = client.listFiles() ; 47 OutputStream out = null ; 48 int i = 1 ; 49 for(FTPFile f:ftpFiles){ 50 File file = new File("G:/ftp/") ; 51 if(!file.exists()) 52 file.mkdirs() ; 53 file = new File(file, new String(f.getName().getBytes("iso-8859-1"),"GBK")) ; 54 out = new FileOutputStream(file) ; 55 client.retrieveFile(f.getName(), out) ; 56 out.close() ; 57 i++ ; 58 } 59 } 60 } catch (SocketException e) { 61 // TODO Auto-generated catch block 62 e.printStackTrace(); 63 } catch (IOException e) { 64 // TODO Auto-generated catch block 65 e.printStackTrace(); 66 } 67 } 68 static void up(String host ,int port ,String user ,String pass){ 69 FTPClient client = new FTPClient() ; 70 try { 71 client.connect(host,port) ; 72 boolean flag = client.login(user, pass) ; 73 if(flag){ 74 client.setFileType(FTP.BINARY_FILE_TYPE); 75 //切换工作目录 76 client.changeWorkingDirectory("/20170806") ; 77 InputStream in = new FileInputStream("E:/周报/个人周报.xlsx") ; 78 client.storeFile("1234.xlsx", in) ; 79 } 80 } catch (SocketException e) { 81 // TODO Auto-generated catch block 82 e.printStackTrace(); 83 } catch (IOException e) { 84 // TODO Auto-generated catch block 85 e.printStackTrace(); 86 } 87 } 88 }