java 实现上传下载功能

使用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();
   
   
  }
 }

}

你可能感兴趣的:(java)