<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的家園

    我的家園

    Socket使用之Ftp下載工具類(lèi)

    Posted on 2012-04-15 16:27 zljpp 閱讀(352) 評(píng)論(0)  編輯  收藏

    ?

    涉及jar包:jftp.jar,jftp-bin-0_70.jar,log4j.jar(見(jiàn)Socket使用之Ftp上傳工具類(lèi)

    上傳見(jiàn):Socket使用之Ftp上傳工具類(lèi),除了FtpDownloadUtils.java之外,其他java文件和上傳都一樣

    1,FtpBaseUtils.java,主要作用獲取IP,Port,username,password等等公共配置信息

    import java.io.File;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    import java.net.SocketAddress;
    
    import org.apache.log4j.Logger;
    
    import com.xxx.vo.FtpVO;
    
    import cz.dhl.ftp.Ftp;
    import cz.dhl.ftp.FtpConnect;
    
    public class FtpBaseUtils {
    	private static final Logger logger = Logger.getLogger(FtpUploadUtils.class);
    	private static final FtpVO ftpVo = new FtpVO();
    	static {
    		ftpVo.setIp(PropertiesUtil.getValue("FTP.IP"));
    		ftpVo.setPort(PropertiesUtil.getValue("FTP.PORT"));
    		ftpVo.setUser(PropertiesUtil.getValue("FTP.USER"));
    		ftpVo.setPassword(PropertiesUtil.getValue("FTP.PASSWORD"));
    		ftpVo.setFtpDir(PropertiesUtil.getValue("FTP.DIR.TASKFile"));// ftp文件存放目錄
    		ftpVo.setLocalDir(FileUtils.getTaskFilePath());// 本地文件目錄
    	}
    
    	public FtpBaseUtils() {
    		super();
    	}
    
    	/**
    	 * 取得ftp連接實(shí)例
    	 * 
    	 * @param ftpVo
    	 *            ftp連接信息
    	 * @return Ftp cz.dhl.ftp.Ftp實(shí)例
    	 */
    	protected static Ftp getFtpInstance(FtpVO ftpVo) {
    		Ftp ftp = new Ftp();
    		try {
    			String ftpIp = ftpVo.getIp();
    			String ftpUser = ftpVo.getUser();
    			String ftpPsw = ftpVo.getPassword();
    			Integer ftpPort = Integer.valueOf(ftpVo.getPort());
    
    			logger.info("測(cè)試連接,ftp信息:" + ftpVo.toString());
    			try {
    				// 測(cè)試是否能連接ftp服務(wù)器,如果沒(méi)有連接,返回失敗信息
    				Socket client = new Socket();
    				System.out.println("ftp 連接開(kāi)始..");
    				SocketAddress addr = new InetSocketAddress(ftpIp, ftpPort);
    				// 連接5秒后無(wú)法連接,返回失敗信息
    				client.connect(addr, 1500); // 超時(shí)時(shí)間為1.5秒
    				System.out.println("ftp 斷開(kāi)連接..");
    				client.close();
    			} catch (Exception e) {
    				// TODO: handle exception
    				throw new Exception("ftp鏈接失敗:" + e.getMessage());
    			}
    
    			/* connect & login to host */
    			FtpConnect ftpConn = FtpConnect.newConnect("ftp://" + ftpIp);
    			ftpConn.setUserName(ftpUser);
    			ftpConn.setPassWord(ftpPsw);
    			ftpConn.setPortNum(ftpPort);
    			ftp.connect(ftpConn);
    		} catch (Exception e) {
    			ftp = null;
    			logger.error("連接失敗!", e);
    		}
    		return ftp;
    	}
    
    	/**
    	 * 獲取FTP配置信息:ip,port,上傳目錄。。。
    	 * 
    	 * @return FtpVO
    	 */
    
    	protected static FtpVO getFtpCommonConfigVO() {
    		return ftpVo;
    	}
    
    	/**
    	 * 刪除文件
    	 * 
    	 * @param filePath
    	 *            文件路徑名
    	 */
    	protected boolean delFile(String filePath) {
    		// TODO Auto-generated method stub
    		try {
    			File file = new File(filePath);
    			if (file.exists()) {
    				file.delete();
    			} else {
    				return false;
    			}
    			return true;
    		} catch (Exception e) {
    			// TODO: handle exception
    			System.err.println("刪除文件失敗:" + e.getMessage());
    			return false;
    		}
    	}
    
    }

    ??

    2 ,F(xiàn)tpDownloadUtils.java負(fù)責(zé)具體上傳操作

    入口:ftpDownloadFile(String fileName)filename包括可獲取到的完整的路徑及文件名,其方法說(shuō)明見(jiàn)注釋

    執(zhí)行下載操作:doFtpDownFile

    ?

    ?

    import java.io.File;
    
    import org.apache.log4j.Logger;
    
    import com.etone.if1Interface.vo.FtpVO;
    
    import cz.dhl.ftp.Ftp;
    import cz.dhl.ftp.FtpFile;
    import cz.dhl.io.CoFile;
    import cz.dhl.io.CoLoad;
    import cz.dhl.io.LocalFile;
    
    public class FtpDownloadUtils extends FtpBaseUtils {
    	private static final Logger logger = Logger
    			.getLogger(FtpDownloadUtils.class);
    
    	/**
    	 * fileName=路徑+文件名
    	 * 
    	 * @param fileNames
    	 */
    	public String ftpDownloadFile(String fileName) {
    		FtpVO ftpVO = getFtpCommonConfigVO();// 獲取公共配置信息:帳號(hào),端口
    		ftpVO.setFtpFileName(fileName);// 設(shè)置要下載的文件
    		ftpVO.setLocalFileName(fileName);// 存放路徑及名稱(chēng)
    		Ftp ftp = getFtpInstance(ftpVO);// 獲取FTP實(shí)例
    
    		String message = doFtpDownFile(ftp, ftpVO);
    		return message;
    	}
    
    	/**
    	 * 執(zhí)行下載操作: FtpVO此對(duì)象里屬性包含ip,用戶(hù)名,帳號(hào),存儲(chǔ)目錄等等
    	 * 
    	 * @param ftp
    	 * @param ftpVo
    	 * @return
    	 */
    	private String doFtpDownFile(Ftp ftp, FtpVO ftpVo) {
    
    		String ftpDir = ftpVo.getFtpDir();
    		String ftpFileName = ftpVo.getFtpFileName();
    		String localDir = ftpVo.getLocalDir();
    		String localFileName = ftpVo.getLocalFileName();
    		String message = ftpFileName + "下載成功!";
    		try {
    			if (ftp == null) {
    				throw new Exception("ftp連接失敗!FTP信息:" + ftpVo.toString());
    			}
    			File localFile = new File(localDir + localFileName);
    			// 判斷文件在本地是否存在
    			if (localFile != null && localFile.exists() && ftpVo.isDelOldFile()) {
    				localFile.delete();
    			}
    
    			CoFile tmpfile = new LocalFile(localDir + localFileName); // 本地文件
    			CoFile ftpFile = new FtpFile(ftpDir + ftpFileName, ftp); // 遠(yuǎn)程文件名
    
    			// 下載文件
    			if (!CoLoad.copy(tmpfile, ftpFile)) {// 下載
    				message = ftpFileName + "下載失敗:" + ftpVo.toString();
    				logger.error("文件下載失敗:" + ftpVo.toString());
    			} else {// 下載成功
    				message = ftpFileName + "下載成功:" + ftpVo.toString();
    				logger.info("文件下載成功:" + ftpVo.toString());
    			}
    		} catch (Exception e) {
    			message = ftpFileName + "下載失敗:" + e.getMessage();
    			logger.error(e.getMessage(), e);
    		} finally {
    			ftp.disconnect();
    		}
    		return message;
    	}
    }
    ?

    ?

    3,PropertiesUtil.java:負(fù)責(zé)配置文件加載(可選,去掉之后需要修改相應(yīng)代碼及配置)

    ?

    import java.io.IOException;
    import java.util.Properties;
    
    import org.apache.log4j.Logger;
    
    /**
     * A simple base implementation of Properties file
     * 
     * @author Eagles 2005-12-22
     */
    public final class PropertiesUtil {
    	protected static Logger logger = Logger.getLogger(PropertiesUtil.class);
    
    	/**
    	 * 配置文件名稱(chēng)
    	 */
    	private static final String FILENAME = "config.properties";
    	private static Properties prop = null;
    
    	/**
    	 * 初始化加載配置文件
    	 * 
    	 * @return:an instance from Properties
    	 */
    	private static synchronized Properties getProperties() {
    		logger.debug("init an instance from the Properties");
    		if (prop == null) {
    			prop = new Properties();
    			try {
    				prop.load(PropertiesUtil.class.getClassLoader()
    						.getResourceAsStream(FILENAME));
    				return prop;
    			} catch (IOException ex) {
    				logger.error("init an instance from the Properties error:"
    						+ ex.getMessage());
    				return null;
    			}
    		}
    		return prop;
    	}
    
    	public static String getValue(String param) {
    		String result = getProperties().getProperty(param);
    		return result == null ? "" : result;
    	}
    
    	public static void main(String[] args) {
    		System.out.println(PropertiesUtil.getValue("ftpPassword"));
    	}
    
    }
    

    ?

    ?對(duì)應(yīng)加載的配置文件

    ?

    #----------------------------------------------
    # Ftp Config
    #----------------------------------------------
    FTP.IP=192.168.7.161
    FTP.USER=root
    FTP.PASSWORD=etone
    FTP.PORT=21
    #ftp存放目錄
    FTP.DIR.TASKFile=/data/
    #本地文件存放目錄
    LOCAL.DIR.TEMP.TASKFile=/temp/
    ?

    存放ftp配置屬性VO(可選,去掉之后需要修改相應(yīng)代碼及配置)

    ?

    import org.apache.commons.lang.builder.ToStringBuilder;
    
    /**
     * ftp相關(guān)數(shù)據(jù)封裝類(lèi)
     * @author Administrator
     *
     */
    public class FtpVO {
    	
    	private String ip;
    	private int port;
    	private String user;
    	private String password;
    	private String ftpDir;
    	private String ftpFileName;
    	
    	private String localDir;
    	private String localFileName;
    	
    	private boolean isDelOldFile;
    	private boolean isReName;
    	
    	public String getFtpDir() {
    		return ftpDir;
    	}
    	public void setFtpDir(String ftpDir) {
    		this.ftpDir = ftpDir;
    	}
    	public String getFtpFileName() {
    		return ftpFileName;
    	}
    	public void setFtpFileName(String ftpFileName) {
    		this.ftpFileName = ftpFileName;
    	}
    	public String getIp() {
    		return ip;
    	}
    	public void setIp(String ip) {
    		this.ip = ip;
    	}
    	public boolean isDelOldFile() {
    		return isDelOldFile;
    	}
    	public void setDelOldFile(boolean isDelOldFile) {
    		this.isDelOldFile = isDelOldFile;
    	}
    	public boolean isReName() {
    		return isReName;
    	}
    	public void setReName(boolean isReName) {
    		this.isReName = isReName;
    	}
    	public String getLocalDir() {
    		return localDir;
    	}
    	public void setLocalDir(String localDir) {
    		this.localDir = localDir;
    	}
    	public String getLocalFileName() {
    		return localFileName;
    	}
    	public void setLocalFileName(String localFileName) {
    		this.localFileName = localFileName;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	public int getPort() {
    		return port;
    	}
    	public void setPort(int port) {
    		this.port = port;
    	}
    	public String getUser() {
    		return user;
    	}
    	public void setUser(String user) {
    		this.user = user;
    	}
    
    	public String toString() {
    		return ToStringBuilder.reflectionToString(this);
    	}
    
    
    }
    
    ?

    4,FileUtils.java輔助類(lèi)(可選,可以把此部分代碼移到FtpBaseUtils.java中,writeToFile()可刪掉

    ?

    ?

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    
    import org.apache.log4j.Logger;
    
    public class FileUtils {
    	private static final Logger logger = Logger.getLogger(FileUtils.class);
    
    	public static final String taskFilePath = PropertiesUtil
    			.getValue("LOCAL.DIR.TEMP.TASKFile");
    	public static final String prefix = "test_";
    	public static final String suffix = ".txt";
    	public static String webRoot = "";
    	static {
    		// 獲取webRoot目錄
    		webRoot = FileUtils.class.getClassLoader().getResource("").toString();// file:/D:/publish/Elvis_GZ_V4/WEB-INF/classes/
    		if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") != -1) {
    			webRoot = webRoot.replace("file:/", "");// file:/D:/publish/Elvis_GZ_V4/WEB-INF/classes/
    		} else {
    			webRoot = webRoot.replace("file:", "");// file:/opt/web/Elvis_GZ_V4/WEB-INF/classes/
    		}
    		webRoot = webRoot.replace("/WEB-INF/classes/", "");
    		webRoot = webRoot.replace("%20", " ");
    	}
    
    	public static final String getWebRoot() {
    		return webRoot;
    	}
    
    	public static final String getTaskFilePath() {
    		return getWebRoot() + taskFilePath;
    	}
    
    	/**
    	 * 內(nèi)容寫(xiě)入指定文件
    	 * 
    	 * @param content
    	 * @param fileName
    	 */
    	public static void writeToFile(String content, String fileName) {
    		System.out.println("sssss");
    		BufferedWriter buffWriter = null;
    		try {
    			buffWriter = new BufferedWriter(new FileWriter(fileName, true));
    			buffWriter.write(content);
    			buffWriter.newLine();
    		} catch (IOException e) {
    			logger.error("寫(xiě)入文件【" + fileName + "】失敗:" + e.getMessage(), e);
    		} finally {
    			if (null != buffWriter) {
    				try {
    					buffWriter.flush();
    					buffWriter.close();
    				} catch (IOException e) {
    					logger.error("close bufferWriter failed:" + e.getMessage(),
    							e);
    				}
    
    			}
    			System.out.println("eeeee");
    		}
    	}
    }
    
    ?

    ?

    ?






    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费人成动漫在线播放r18| 亚洲国产精品成人精品软件 | 亚洲午夜精品一区二区麻豆| 久久w5ww成w人免费| 亚洲中文字幕在线观看| 久久久精品国产亚洲成人满18免费网站| 国产一级淫片免费播放电影| 337P日本欧洲亚洲大胆艺术图| 免费无码又爽又刺激毛片| 99免费观看视频| 国产成人免费福利网站| 亚洲精品人成网线在线播放va| 日韩一级视频免费观看| 国产偷国产偷亚洲高清人| 亚洲国产一成久久精品国产成人综合| 羞羞视频在线免费观看| 国产精品亚洲二区在线观看| 久久中文字幕免费视频| 亚洲小说区图片区| 免费观看的毛片手机视频| 色视频在线观看免费| 中文字幕亚洲乱码熟女一区二区| a级毛片100部免费观看| 久久精品国产亚洲AV大全| 最近新韩国日本免费观看| 亚洲中文字幕无码亚洲成A人片| 国产男女猛烈无遮挡免费视频| h在线看免费视频网站男男| 亚洲第一福利视频| 在线免费观看毛片网站| 国产精品一区二区三区免费| 亚洲黄色在线观看网站| 成年女人免费v片| 亚洲日韩在线观看免费视频| 久久精品国产亚洲AV麻豆网站| 国产妇乱子伦视频免费| 羞羞漫画小舞被黄漫免费| 亚洲成a人片在线观看无码专区| 国产区在线免费观看| 亚洲精品在线免费观看视频| 国产a不卡片精品免费观看|