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 }