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 parameter
public 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
分享到:
相关推荐
FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP...
ftp上传下载工具上传下载工具ftp上传下载工具ftp上传下载工具ftp上传下载工具ftp上传下载工具ftp上传下载工具ftp上传下载工具ftp上传下载工具ftp
一个PB开发的FTP上传与下载案例,绝对原创哦,自动升级程序
FTP上传文件或者FTP下载文件,自测 成功
FTP上传下载文件
C#winform FTP图片上传下载
完整实现ftp上传与下载并解析csv文件,并实现对文件内容进行分析及错误信息的提示及保存日志,并可以实现多个文件同时下载,并且同时解析
java写的ftp,下载上传文件,定时监控下载上传,自动解压加压,
使用FTP协议实现文件上传下载的功能,下载是可以查看到上传的进度信息等,也可以实现远程上传下载,本人亲自测试过。
VB.NET实现FTP的下载与上传,内容懒得填写,随便复制一段文字填上来凑个字数!
基于安卓的FTP登录、上传、下载、删除、文件夹创建和常用方法的封装。
curl实现ftp上传下载,vs版本实现,可以使用
windows c++简单的 ftp上传下载
FTP上传与下载源码(Pb9) FTP上传与下载源码(Pb9) FTP上传与下载源码(Pb9) FTP上传与下载源码(Pb9)
通过seinweb.dll这个组件实现简单ftp上传与下载文件 该实例是PB9开发的。
Qt5.8用ftp实现上传和下载文件,并带进度条显示
VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效...
VB代码利用FTP实现文件上传于下载代码 VB代码利用FTP实现文件上传于下载代码
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
ftp上传下载器