码迷,mamicode.com
首页 > Web开发 > 详细

FTP上传

时间:2014-12-02 18:50:05      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   os   sp   java   on   文件   div   

package cn.zto.util;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;

import org.apache.log4j.Logger;

import cn.zto.log4j.Log4jConfigurator;
import cn.zto.pusher.HeNanPusher;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;

//import sun.net.ftp.FtpClient;
import org.apache.commons.net.ftp.*;

@SuppressWarnings({ "restriction", "unused" })
public class FtpUtil {
	private Logger log = Log4jConfigurator.getLogger(FtpUtil.class);
	private static String encoding = System.getProperty("file.encoding");
	/**
	 * 本地文件名
	 */
	private String localfilename;
	/**
	 * 远程文件名
	 */
	private String remotefilename;
	/**
	 * FTP客户端
	 */
	private FTPClient ftpClient;

	/**
	 * 服务器连接
	 * 
	 * @param ip
	 *            服务器IP
	 * @param port
	 *            服务器端口
	 * @param user
	 *            用户名
	 * @param password
	 *            密码
	 * @param path
	 *            服务器路径
	 */
	public boolean connect(String hostname, int port, String username,
			String password) {
		ftpClient = new FTPClient();
		try {
			ftpClient.connect(hostname, port);
			ftpClient.setControlEncoding("UTF-8");
			ftpClient.setConnectTimeout(60000);
			ftpClient.setSoTimeout(60000);
			ftpClient.setDefaultTimeout(60000);
			ftpClient.setDataTimeout(60000);

		
			if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
				if (ftpClient.login(username, password)) {
					ftpClient.enterLocalActiveMode();//设置主动模式 登录之后设置
					this.log.error("connect success" + hostname);
					return true;
				} else {
					this.log.error("connect error:" + hostname);
					return false;
				}
			} else {
				this.log.error("connect error:" + hostname);
				return false;
			}
		} catch (Exception e) {
			e.printStackTrace();
			this.log.error("connect error" + hostname);
			return false;
		}

	}

	// 关闭连接
	public void disconnect() throws IOException {
		if (ftpClient.isConnected()) {
			ftpClient.disconnect();
			this.log.error("断开连接");
		}
	}

	/**
	 * 上传文件
	 */
	public boolean upload(String remotefilename, String xml) {

		this.remotefilename = remotefilename;
		// 判断上传的文件在FTP服务器下是否已经存在
		/*FTPFile[] files;
		try {
			files = ftpClient.listFiles(remotefilename);
			if (files.length > 0) {
				this.log.error("File already exists");
				return true;
			}
		} catch (IOException e) {
			this.log.error("find file error"+e);
			return false;
		}*/
		InputStream input = null;
		try {
			input = new ByteArrayInputStream(xml.getBytes("utf-8"));
			ftpClient.changeWorkingDirectory(new String(remotefilename
					.getBytes(encoding), "iso-8859-1"));
			if (ftpClient.storeFile(remotefilename, input)) {
				this.log.error("upload success:"+remotefilename);
				return true;
			} else {
				this.log.error("upload failed"+remotefilename);
				return false;
			}
		} catch (IOException ex) {
			this.log.error("not upload" + ex.getMessage());
			return false;
		}finally{
			if(input!=null){
				try {
					input.close();
					this.log.error("关闭输入流");
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

}

  

FTP上传

标签:blog   io   ar   os   sp   java   on   文件   div   

原文地址:http://www.cnblogs.com/yanfly/p/4137981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!