使用apache 的开源jar 包,实现文件的上传和下载功能:
package com.iss.itreasury.cbeservice.clearfile.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.iss.itreasury.syscore.utils.PropertyUtils;
/**
* UPOP 上传对账文件
* @author jpgao
*
*/
public class FileUp {
private static final Logger log = LoggerFactory.getLogger(FileUp.class);
private static final String[] filePath = {"chinaums_config.properties"};
private static Properties upopProperties = null;
public static String getItem(String key){
if(upopProperties == null){
try {
upopProperties = PropertyUtils.loadProperties(filePath);
} catch (IOException e) {
log.info("加载文件失败");
}
}
return upopProperties.getProperty(key);
}
//================================================================
private FTPClient ftpClient = null;
private String username = "";
private String password = "";
private String ip = "";
private int port = 21;
/**
* 文件下载
* @param ftpPath
* @param localPath
* @param fileName
* @return
* @throws IOException
*/
public File download(String ftpPath, String localPath, String fileName) throws IOException {
File localFile = null;
localFile = new File(localPath + "/" + fileName);
OutputStream is = new FileOutputStream(localFile);
ftpClient.retrieveFile(fileName, is);
is.close();
return localFile;
}
/**
* 文件上传功能
* @param ftpPath
* @param localPath
* @param fileName
* @return
* @throws IOException
*/
public boolean fileUp(String ftpPath, String localPath, String fileName) throws Exception {
boolean flag = false;
InputStream isStream = null;
try{
StringBuilder sbLocalFile = new StringBuilder(50);
sbLocalFile.append(localPath).append(File.separator).append(fileName);
isStream = new FileInputStream(sbLocalFile.toString());
StringBuilder sbRemoteFile = new StringBuilder(40);
sbRemoteFile.append(ftpPath).append(File.separator).append(fileName);
flag = ftpClient.storeFile(sbRemoteFile.toString(), isStream);
if(flag){
log.info("文件上传成功!");
}
}finally{
if(isStream != null){
isStream.close();
}
}
return flag;
}
/**
* 关闭连接
*/
public void closeConnect() {
try {
if (ftpClient != null) {
ftpClient.logout();
ftpClient.disconnect();
log.info("ftp退出:");
}
} catch (Exception e) {
log.info("ftp退出:退出异常");
}
}
/**
* 设置传输文件的类型[文本文件或者二进制文件]
*
* @param fileType
* --BINARY_FILE_TYPE、ASCII_FILE_TYPE
*/
public void setFileType(int fileType) {
try {
ftpClient.setFileType(fileType);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 扩展使用
*
* @return
*/
protected FTPClient getFtpClient() {
// connectServer();
return ftpClient;
}
/**
* 连接到服务器
*/
public void connectServer(String userName,String passWord,String ipAddr,int portNum) {
this.username = userName;
this.password = passWord;
this.ip = ipAddr;
this.port = portNum;
if (ftpClient == null) {
int reply;
try {
ftpClient = new FTPClient();
ftpClient.setDefaultPort(port);
ftpClient.configure(getFtpConfig());
ftpClient.connect(ip);
ftpClient.login(username, password);
ftpClient.setDefaultPort(port);
log.info(ftpClient.getReplyString());
reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
log.info("FTP server refused connection.");
}
} catch (Exception e) {
log.error("登录ftp服务器【" + ip + "】失败");
log.error(e.getMessage());
}
}
}
/**
* 设置FTP客服端的配置--一般可以不设置
*
* @return
*/
private FTPClientConfig getFtpConfig() {
FTPClientConfig ftpConfig = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
ftpConfig.setServerLanguageCode(FTP.DEFAULT_CONTROL_ENCODING);
return ftpConfig;
}
/**
* 转码[ISO-8859-1 -> GBK] 不同的平台需要不同的转码
*
* @param obj
* @return
*/
private String iso8859togbk(Object obj) {
try {
if (obj == null)
return "";
else
return new String(obj.toString().getBytes("iso-8859-1"), "UTF-8");
} catch (Exception e) {
return "";
}
}
public String upFile(){
return null;
}
public static void main(String[] args) {
try {
long start = System.currentTimeMillis();
FileUp fileUp = new FileUp();
fileUp.connectServer("test", "test", "10.24.65.159", 21);
fileUp.fileUp("", "e:/", "tsp_kj_20140129");
fileUp.closeConnect();
long end = System.currentTimeMillis();
System.out.println(end - start);
System.out.println("======================================");
} catch (Exception e) {
e.printStackTrace();
}
}
}