隆梦影 发表于 2016-6-8 11:22:54

FTP服务器的文件管理

导入包commons-net-ftp-current.jar

package com.network.manage.device.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class FTPUtil {
private static FTPClient ftp = new FTPClient();
public static boolean login(String hostname, int port, String username,
String password, String remotePath){
boolean success = false;
int reply;
try {
ftp.connect(hostname, port);// 连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.err.println("FTP服务器拒绝连接!");
return success;
}
if (null != remotePath && remotePath.trim() != "") {
ftp.changeWorkingDirectory(remotePath); // 设置服务器上传文件路径
}
success = true;
return success;
}
catch (IOException e) {
System.err.println("连接FTP服务器时有I/O异常!");
System.err.println(e.getMessage());
return success;
}
}

public static boolean uploadFile(String hostname, int port, String username,
String password, String remotePath,InputStream input,
String remoteFilename) {
boolean success = false;
try {
//登录FTP服务器
success = login(hostname, port, username, password, remotePath);
//登录失败
if (!success) {
return success;
}
//保存上传的文件
ftp.storeFile(remoteFilename, input);
ftp.logout();
success = true;
} catch (IOException e) {
System.err.println("发送文件时有I/O异常!");
System.err.println(e.getMessage());
} finally {
try {
if (null != input) {
input.close();
}
} catch (IOException e) {
System.err.println("关闭文件时出错!");
System.err.println(e.getMessage());
}
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
System.err.println("关闭FTP连接时发生I/O异常!");
System.err.println(ioe.getMessage());
}
}
}
return success;
}
public static boolean downloadFile(String hostname, int port, String username,
String password, String remotePath, String remoteFilename,
String localFilename) {
boolean success = false;
boolean fileExists = false;
FileOutputStream output = null;
try {
//登录FTP服务器
success = login(hostname, port, username, password, remotePath);
if (!success) {
return success;
}
File localFile = new File(localFilename);
if (localFile.exists()) {
ftp.disconnect();
System.err.println("文件: " + localFilename + " 已经存在!");
return success;
}
output = new FileOutputStream(localFile);
//配置服务器本地化,否则因为格式原因找不到文件。
FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_NT);
config.setServerLanguageCode("China");
ftp.configure(config);
//列出目录下所有文件,查找并写入输出流
FTPFile[] fs = ftp.listFiles();
for (int i = 0; i < fs.length; i++) {
if (fs.getName().equals(remoteFilename)) {
fileExists = true;
ftp.retrieveFile(fs.getName(), output);
}
}
//如果FTP服务器没有要下载的文件
if (!fileExists) {
ftp.disconnect();
System.err.println("要下载的文件: " + remoteFilename + " 不存在!");
return success;
}
ftp.logout();
success = true;
} catch (IOException e) {
System.err.println("接收文件时有I/O异常!");
System.err.println(e.getMessage());
} finally {
try {
if (null != output) {
output.close();
}
} catch (IOException e) {
System.err.println("关闭文件时出错!");
System.err.println(e.getMessage());
}
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
System.err.println("关闭FTP连接时发生I/O异常!");
System.err.println(ioe.getMessage());
}
}
}
return success;
}
public static boolean deleteFile(String hostname, int port,
String username, String password, String remotePath,
String remoteFilename) {
boolean success = false;
try {
// 登录FTP服务器
success = login(hostname, port, username, password, remotePath);
//登录失败
if (!success) {
return success;
}
String cmd = "DELE " + remoteFilename + " \r\n";
ftp.sendCommand(cmd);
ftp.logout();
success = true;
} catch (IOException e) {
System.err.println("删除文件时有I/O异常!");
System.err.println(e.getMessage());
success = false;
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
System.err.println("关闭FTP连接时发生I/O异常!");
System.err.println(ioe.getMessage());
}
}
}
return success;
}
}
页: [1]
查看完整版本: FTP服务器的文件管理