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上传下载任务中,可能会涉及到XML文件的处理。Java提供了DOM、SAX和StAX三种主要的XML解析方式。 1. DOM(Document Object Model)解析:一次性加载整个XML文档到内存,形成一棵树形结构,方便遍历和查询。...
在这个"FTP上传与下载程序PB"的案例中,我们将会探讨如何使用PowerBuilder来实现FTP功能,包括文件的上传和下载,以及可能涉及的自动升级机制。 首先,理解FTP的基本概念至关重要。FTP允许用户在两台计算机之间交换...
### VB FTP上传下载知识点解析 #### 一、概述 在提供的代码示例中,主要涉及了使用Visual Basic(简称VB)进行FTP(File Transfer Protocol,文件传输协议)上传与下载的功能实现。FTP是一种用于在网络上进行文件...
以上就是关于“Delphi实现FTP连接及上传下载”的详细知识点。通过理解和实践这些步骤,开发者可以在Delphi应用程序中集成FTP功能,提升文件管理和传输的效率。对于U_FTP这样的项目文件,通常包含示例代码、配置文件...
FTP上传文件或者FTP下载文件,自测 成功
FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP...
FTP上传下载文件
PB9 FTP上传与下载实例是基于PowerBuilder 9(PB9)开发的一种应用程序功能,它利用seinweb.dll组件来实现在FTP(File Transfer Protocol)服务器上进行文件的上传和下载操作。FTP是一种广泛用于互联网上的协议,...
FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,允许用户从一台计算机(客户端)将文件上传到另一台计算机(服务器)或者从服务器下载文件。在VB中实现FTP功能,可以极大地简化文件管理操作,特别...
标题“FTP上传与下载pb9.0code”指的是使用PowerBuilder 9.0(简称PB9)开发的一个程序,该程序实现了FTP(File Transfer Protocol)的上传和下载功能。PowerBuilder是一款强大的可视化编程工具,特别适合于构建...
FTP上传涉及到将本地文件发送到远程FTP服务器。使用libcurl,我们可以通过以下步骤实现: 1. **初始化libcurl**:创建一个`CURL`指针,并调用`curl_global_init()`初始化全局设置。 2. **设置URL**:使用`curl_...
总的来说,FTP远程上传下载文件涉及到网络通信、文件操作、进度跟踪以及安全性等多个方面,是Web开发中常见的功能之一。利用C#和Asp.NET,开发者可以构建高效、安全的FTP客户端服务,满足各种文件传输需求。
在本文中,我们将深入探讨如何使用C# WinForm应用程序实现FTP(文件传输协议)功能,以便进行图片的上传和下载。FTP是一种广泛用于在互联网上交换文件的标准协议,而C# WinForm则提供了用户友好的图形界面来实现这一...
"ftp上传下载图片" FTP(File Transfer Protocol,文件传输协议)是一种常用的网络协议,用于在网络上进行文件传输。FTP 协议允许用户在远程服务器上存储和检索文件。在这里,我们将讨论如何使用 C# 语言实现 FTP ...
FTP上传涉及到`storeFile()`方法,而下载则使用`retrieveFile()`。 2. CSV文件解析: CSV(Comma Separated Values)文件是一种常见的数据交换格式,通常用于导入和导出表格数据。Java中,可以使用OpenCSV或者...
总结,Java实现FTP文件上传和下载涉及的主要知识点包括:FTP协议基础,Apache Commons Net库的使用,FTPClient对象的配置与操作,以及相关的文件流处理和错误处理机制。理解并熟练掌握这些内容,将有助于你在实际...
《PowerBuilder 9.0 实现FTP上传与下载详解》 在信息技术领域,尤其是在软件开发中,数据交换和资源共享是常见的需求。对于采用PowerBuilder 9.0作为开发工具的项目,如何实现在受限环境中通过FTP(文件传输协议)...
在这个场景中,"一个ftp上传下载类(MFC)" 是一个使用MFC构建的类,它封装了FTP协议,使得开发者能够方便地在自己的应用中实现FTP的上传和下载功能。 FTP上传下载类的核心功能包括: 1. **连接与断开**:类应包含...
总的来说,使用Java实现FTP上传和下载涉及网络通信、文件操作和错误处理等多个方面的知识。通过"ftpLoadDown.jar"库,我们可以简化这个过程,使得开发者可以专注于业务逻辑,而无需关心底层的FTP协议细节。在实际...
Android 使用 FTP 方式实现文件上传和下载 Android 使用 FTP 方式实现文件上传和下载是移动应用开发中的一项重要功能,特别是在 OTA 在线升级项目中,文件上传和下载是一个关键步骤。下面就 Android 使用 FTP 方式...