- 所用到的jar包有:
- commons-net-1.4.1.jar
- jakarta-oro.jar
一、上传文件
01
文件上传源代码
02
/**
03
* Description: 向FTP服务器上传文件
04
* @Version1.0
05
* @param url FTP服务器hostname
06
* @param port FTP服务器端口
07
* @param username FTP登录账号
08
* @param password FTP登录密码
09
* @param path FTP服务器保存目录
10
* @param filename 上传到FTP服务器上的文件名
11
* @param input 输入流
12
* @return 成功返回true,否则返回false
13
*/
14
public static boolean uploadFile(
15
String url,//FTP服务器hostname
16
int port,//FTP服务器端口
17
String username, // FTP登录账号
18
String password, //FTP登录密码
19
String path, //FTP服务器保存目录
20
String filename, //上传到FTP服务器上的文件名
21
InputStream input // 输入流
22
) {
23
boolean success = false;
24
FTPClient ftp = new FTPClient();
25
try {
26
int reply;
27
ftp.connect(url, port);//连接FTP服务器
28
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
29
ftp.login(username, password);//登录
30
reply = ftp.getReplyCode();
31
if (!FTPReply.isPositiveCompletion(reply)) {
32
ftp.disconnect();
33
return success;
34
}
35
ftp.changeWorkingDirectory(path);
36
ftp.storeFile(filename, input);
37
38
input.close();
39
ftp.logout();
40
success = true;
41
} catch (IOException e) {
42
e.printStackTrace();
43
} finally {
44
if (ftp.isConnected()) {
45
try {
46
ftp.disconnect();
47
} catch (IOException ioe) {
48
}
49
}
50
}
51
return success;
52
}
以下是文件上传的测试用例:
/**
02
* 将本地文件上传到FTP服务器上
03
*
04
*/
05
public void testUpLoadFromDisk(){
06
try {
07
FileInputStream in=new FileInputStream(new File("D:/test.txt"));
08
boolean flag = uploadFile("127.0.0.1", 21, "administrator", "zyuc2011", "test","test.txt", in);
09
System.out.println(flag);
10
} catch (FileNotFoundException e) {
11
e.printStackTrace();
12
}
13
}
01
/**
02
* 在FTP服务器上生成一个文件,并将一个字符串写入到该文件中
03
*
04
*/
05
public void testUpLoadFromString(){
06
try {
07
String str = "这是要写入的字符串!";
08
InputStream input = new ByteArrayInputStream(str.getBytes("utf-8"));
09
boolean flag = uploadFile("127.0.0.1", 21, "administrator", "zyuc2011", "test","test.txt", input);
10
System.out.println(flag);
11
} catch (UnsupportedEncodingException e) {
12
e.printStackTrace();
13
}
14
}
二、文件下载
文件下载源代码
02
/**
03
* Description: 从FTP服务器下载文件
04
* @Version1.0
05
* @param url FTP服务器hostname
06
* @param port FTP服务器端口
07
* @param username FTP登录账号
08
* @param password FTP登录密码
09
* @param remotePath FTP服务器上的相对路径
10
* @param fileName 要下载的文件名
11
* @param localPath 下载后保存到本地的路径
12
* @return
13
*/
14
public static boolean downFile(
15
String url, //FTP服务器hostname
16
int port,//FTP服务器端口
17
String username, //FTP登录账号
18
String password, //FTP登录密码
19
String remotePath,//FTP服务器上的相对路径
20
String fileName,//要下载的文件名
21
String localPath//下载后保存到本地的路径
22
) {
23
boolean success = false;
24
FTPClient ftp = new FTPClient();
25
try {
26
int reply;
27
ftp.connect(url, port);
28
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
29
ftp.login(username, password);//登录
30
reply = ftp.getReplyCode();
31
if (!FTPReply.isPositiveCompletion(reply)) {
32
ftp.disconnect();
33
return success;
34
}
35
ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
36
FTPFile[] fs = ftp.listFiles();
37
for(FTPFile ff:fs){
38
if(ff.getName().equals(fileName)){
39
File localFile = new File(localPath+"/"+ff.getName());
40
OutputStream is = new FileOutputStream(localFile);
41
ftp.retrieveFile(ff.getName(), is);
42
is.close();
43
}
44
}
45
46
ftp.logout();
47
success = true;
48
} catch (IOException e) {
49
e.printStackTrace();
50
} finally {
51
if (ftp.isConnected()) {
52
try {
53
ftp.disconnect();
54
} catch (IOException ioe) {
55
}
56
}
57
}
58
return success;
59
}
以下是文件下载的测试用例:
/**
02
* 将FTP服务器上文件下载到本地
03
*
04
*/
05
public void testDownFile(){
06
try {
07
boolean flag = downFile("127.0.0.1", 21, "administrator", "zyuc2011", "test","test.txt", "D:/");
08
System.out.println(flag);
09
} catch (Exception e) {
10
e.printStackTrace();
11
}
12
}