首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ftp上载与下传

2012-09-06 
ftp下载与上传package cn.eshore.bnet.baobiaotask.serviceimport java.io.Fileimport java.io.FileInpu

ftp下载与上传

package cn.eshore.bnet.baobiaotask.service;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import cn.eshore.bnet.baobiaotask.entity.BaoBiaoProperties;/** * FTP TOOLS (must import commons-net-1.4.1.jar or newer jar) <dependency> * <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> * <version>1.4.1</version> </dependency> *  * @author wuxi *  */public class FtpUtil {private static final Log log = LogFactory.getLog(FtpUtil.class);// FTP server parameterpublic static String IP;public static String ACCOUNT;public static String PASSWORD;public static String REMOTE_LOG_DIR;public static final int BUFFER_SIZE = 2048;// constant parameter,do not change them.public static final int ASCII_FILE_TYPE = 0;public static final int BINARY_FILE_TYPE = 2;public static final String GBK_ENCODING = "GBK";public static final String UTF8_ENCODING = "UTF-8";static {IP = "192.18.96.73";ACCOUNT = "";PASSWORD = "";REMOTE_LOG_DIR = "/panshao";}/** * FTP upload single file */public static int uploadFile(File file, String fileName) {return uploadFile(IP, ACCOUNT, PASSWORD, file, REMOTE_LOG_DIR,GBK_ENCODING, BINARY_FILE_TYPE, fileName);}public static int uploadFile(String ip, String account, String password,File file, String remoteDir, String encoding, int fileType,String fileName) {FTPClient ftpClient = new FTPClient();FileInputStream fis = null;try {ftpClient.connect(ip);ftpClient.login(account, password);fis = new FileInputStream(file);ftpClient.changeWorkingDirectory(remoteDir);ftpClient.setBufferSize(BUFFER_SIZE);ftpClient.setControlEncoding(encoding);ftpClient.setFileType(fileType);ftpClient.storeFile(fileName, fis);log.info("Upload " + fileName + " to " + IP + "/" + remoteDir);return 0;} catch (IOException e) {e.printStackTrace();throw new RuntimeException("FTP client make a mistake!", e);} finally {if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();throw new RuntimeException("Close FTP connection error!", e);}}}/** * FTP download single file */public static int downloadFile(String fileName, File localFile) {return downloadFile(IP, ACCOUNT, PASSWORD, REMOTE_LOG_DIR, fileName,GBK_ENCODING, BINARY_FILE_TYPE, localFile);}public static int downloadFile(String ip, String account, String password,String remoteDir, String fileName, String encoding, int fileType,File localFile) {FTPClient ftpClient = new FTPClient();FileOutputStream fos = null;try {ftpClient.connect(ip);ftpClient.login(account, password);if (!remoteDir.endsWith("/")) {remoteDir += "/";}String remoteFileName = remoteDir + fileName;fos = new FileOutputStream(localFile);ftpClient.setBufferSize(BUFFER_SIZE);ftpClient.setFileType(fileType);ftpClient.retrieveFile(remoteFileName, fos);log.info("Download " + fileName + " to "+ localFile.getParentFile().getPath());return 0;} catch (IOException e) {e.printStackTrace();throw new RuntimeException("FTP client make a mistake!", e);} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();throw new RuntimeException("Close FTP connection error!", e);}}}public static List<String> listFiles(String remoteDir) {FTPClient ftpClient = new FTPClient();List<String> nameList = new ArrayList<String>();try {ftpClient.connect(IP);ftpClient.login(ACCOUNT, PASSWORD);FTPFile[] files = ftpClient.listFiles(remoteDir);for (int i = 0; i < files.length; i++) {if (files[i].isFile()) {nameList.add(files[i].getName());}}} catch (Exception e) {e.printStackTrace();}return nameList;}public static void main(String[] args) {// 放在本地的文件名File localFile = new File("F:\\数据入库\\测试\\a.TXT");  int i = downloadFile("xx.TXT", localFile);  System.out.println(i); }}


上面的例子是完全可用的,下面会附上所需要的jar包,其中main方法中实现的效果就是:
把指定服务器文件夹下面的xx.TXT文档下载到本地的F:\\数据入库\\测试\\a.TXT

热点排行