JavaアクセスFTP
6277 ワード
ここでは、JavaがFTPからファイルをダウンロードする(ファイルストリームを取得する)例のみを示します.
/**
*
*
*/
public final class FileUtil
{
/**
* properties
*
* @param filePath properties
* @return Properties
*/
public static Properties loadProperties(String filePath)
{
Properties properties = new Properties();
try
{
properties.load(new FileInputStream(new File(filePath)));
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return properties;
}
}
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
/**
* FTP
*/
public class FTPHandler
{
/**
*
*/
private static final Logger logger = Logger.getLogger(FTPHandler.class);
/**
* classes
*/
private static final String CLASS_PATH = FTPHandler.class.getResource("/").getPath().substring(1);
/**
* config
*/
private static final String CONFIG_DIR = "config";
/**
* ftp
*/
private Properties ftpConfig;
/**
* FTPHandler
*/
public static FTPHandler instance;
/**
*
*/
private FTPHandler()
{
this.init();
}
/**
*
*/
private void init()
{
//ftp
String ftpConfigPath = CLASS_PATH.substring(0, CLASS_PATH.length() - 8) + FTPHandler.CONFIG_DIR + "/" + "ftpserver.properties";
ftpConfig = FileUtil.loadProperties(ftpConfigPath);
}
/**
* FTPHandler
*
* @return
*/
public static synchronized FTPHandler getInstance()
{
if (null == instance)
{
instance = new FTPHandler();
}
return instance;
}
/**
* 。 FTP
*
* @param areaFlag
* @param filePath
* @return
*/
public InputStream getInputStream(String areaFlag, String filePath)
{
FTPClient ftp = this.ftpFactory(areaFlag);
InputStream in = null;
try
{
in = ftp.retrieveFileStream(filePath);
}
catch (IOException e)
{
logger.error(" , :" + filePath, e);
}
this.closeFtp(ftp);
return in;
}
/**
* ftpClient
*
* @param areaFlag FTP
* @return
*/
private FTPClient ftpFactory(String areaFlag)
{
FTPClient ftp = new FTPClient();
if (null != ftpConfig.getProperty("ftp.controlkeepalivetimeout"))
{
ftp.setControlKeepAliveTimeout(Long.valueOf(ftpConfig.getProperty("ftp.controlkeepalivetimeout")));
}
try
{
//ftp
ftp.connect(ftpConfig.getProperty("ftp.server"));
int reply = ftp.getReplyCode();
//
if (!FTPReply.isPositiveCompletion(reply))
{
ftp.disconnect();
logger.error("FTP !");
}
//
if (!ftp.login(getAccountInfoByFlag(areaFlag, "username"), this.getAccountInfoByFlag(areaFlag, "password")))
{
ftp.logout();
}
else
{
//
ftp.setFileType(FTP.BINARY_FILE_TYPE);
}
}
catch (Exception e)
{
logger.error(" ftpClient !", e);
}
return ftp;
}
private void closeFtp(FTPClient ftp)
{
try
{
ftp.noop();
ftp.logout();
}
catch (IOException e)
{
logger.error("ftpClient !", e);
}
finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException f)
{
logger.error("ftp !", f);
}
}
}
}
/**
*
*
* @param areaFlag
* @param suffix properties
* @return
*/
private String getAccountInfoByFlag(String areaFlag, String suffix)
{
// key
String key = "ftp." + suffix;
if (null != areaFlag && !"".equals(areaFlag))
{
key = "ftp." + areaFlag + "_" + suffix;
}
return ftpConfig.getProperty(key);
}
// public static void main(String[] args)
// {
// FTPHandler tmp = FTPHandler.getInstance();
//
// try
// {
// System.out.println(IOUtils.toString(tmp.getInputStream("11", "jQuery_Backup.txt")));
// }
// catch (IOException e)
// {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
}
プロファイル
################################################
#Connection Configuration
ftp.server=IPアドレス
ftp.controlkeepalivetimeout=300
#Account Configuration
ftp.11_username=123
ftp.11_password=123
ftp.33_username=456
ftp.33_password=456