FTP上传下载

package org.test.ftp;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;

import org.test.LogUtil;

/**
 * The FTP client utility class.
 */
public class MyFtpClient {
	private FTPClient ftpClient;
	public String ip;
	public String port;
	public String username;
	public String password;

	public MyFtpClient(String ip, String port, String username, String password) {
		super();
		this.ip = ip;
		this.port = port;
		this.username = username;
		this.password = password;
	}

	/**
	 * Download to destination path.<br>
	 * <B>Caution:</B>The destination path should include the file name.<br>
	 * For example : the correct should be "d:/folder/1.txt" , not "d:/folder/"
	 * 
	 * @param sour
	 * @param dest
	 * @throws RuntimeException
	 */
	public void download(String sour, String dest) throws RuntimeException {
		FTPClient ftpClient = new FTPClient();
		FileOutputStream fos = null;
		try {
			if (null != port && !"".equals(port)) {
				ftpClient.connect(ip, Integer.parseInt(port));
			} else {
				ftpClient.connect(ip);
			}

			ftpClient.login(username, password);

			String remoteFileName = sour;
			fos = new FileOutputStream(dest);

			ftpClient.setBufferSize(1024);

			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			ftpClient.retrieveFile(remoteFileName, fos);
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("FTP下载出错", e); //$NON-NLS-1$
		} finally {
			IOUtils.closeQuietly(fos);
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	/**
	 * Download to destination path.<br>
	 * <B>Caution:</B>The destination path should include the file name.<br>
	 * For example : the correct should be "d:/folder/1.txt" , not "d:/folder/"
	 * 
	 * @param sour
	 * @param dest
	 * @throws RuntimeException
	 */
	public boolean upload(String localFileName, String remote)
			throws RuntimeException {
		FileInputStream fis = null;
		boolean flag = false;
		try {
			ftpClient.setBufferSize(1024);
			ftpClient.enterLocalPassiveMode();
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			fis = new FileInputStream(localFileName);
			flag = ftpClient.storeFile(remote, fis);
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException();
		} finally {
			IOUtils.closeQuietly(fis);
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException();
			}
		}
		return flag;
	}

	/**
	 * ftp 登录
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean ftpLogin() throws Exception {
		boolean flag = false;
		ftpClient = new FTPClient();
		if (null != port && !"".equals(port)) {
			ftpClient.connect(ip, Integer.parseInt(port));
		} else {
			ftpClient.connect(ip);
		}
		flag = ftpClient.login(username, password);
		LogUtil.logInfo("Login Ftp, username: " + username + ", password: "
				+ password + " ,port: " + port + ",result : " + flag);
		return flag;
	}
}

你可能感兴趣的:(ftp)