Java tutorial
/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.publication.deploy.provider; import org.apache.commons.lang.StringUtils; import org.apache.commons.vfs2.FileObject; import org.apache.commons.vfs2.FileSystemException; import org.apache.commons.vfs2.FileSystemManager; import org.apache.commons.vfs2.FileSystemOptions; import org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ewcms.publication.deploy.DeployOperatorable; /** * ??ftp? * * @author wangwei */ public class FtpDeployOperator extends DeployOperatorBase { private static final Logger logger = LoggerFactory.getLogger(FtpDeployOperator.class); protected static final String DEFAULT_PORT = "21"; public static class Builder extends BuilderBase { public Builder(String hostname, String path) { this.hostname = hostname; this.path = path; } @Override public DeployOperatorable build() { return new FtpDeployOperator(this); } } public FtpDeployOperator(Builder builder) { super(builder); } @Override protected FileObject getRootFileObject(FileSystemOptions opts, BuilderBase builder, FileSystemManager manager) throws FileSystemException { FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, false); String port = StringUtils.isBlank(builder.getPort()) ? DEFAULT_PORT : builder.getPort(); StringBuilder connBuilder = new StringBuilder(); connBuilder.append("ftp://"); connBuilder.append(builder.getHostname()).append(":").append(port); connBuilder.append(builder.getPath()); String conn = connBuilder.toString(); logger.debug("uri is {}", conn); return manager.resolveFile(conn, opts); } }