package com.suning.schedule.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
/**
* ftp上传、下载
*
* @author xxx
*/
public class FtpUtil
{
/**
* 上传文件
*
* @param ip ftp服务器IP
* @param port ftp服务端口
* @param username 用户名
* @param password 密码
* @param workDirectory 工作目录
* @param filename 文件名称
* @param inputStream 文件流
* @return 存储结果
*/
public static boolean uploadFile(String ip, int port, String username, String password, String workDirectory,
String filename, FileInputStream inputStream)
{
boolean success = false;
FTPClient ftp = new FTPClient();
try
{
// 连接FTP服务器,如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.connect(ip, port);
// 登录,用户名和密码
ftp.login(username, password);// 登录
// ftp拒绝服务请求
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
{
ftp.disconnect();
return success;
}
// 设置文件的传出方式
client.setFileType(FTPClient.BINARY_FILE_TYPE);
// 设置文件的编码
client.setControlEncoding("UTF-8");
// 设置ftp的初始化目录
ftp.changeWorkingDirectory(workDirectory);
ftp.storeFile(filename, inputStream);
ftp.logout();
success = true;
}
catch (IOException e)
{
}
finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException ioe)
{
}
}
}
return success;
}
/**
* 下载文件
*
* @param ip ftp服务器IP
* @param port ftp服务端口
* @param username 用户名
* @param password 密码
* @param workDirectory 工作目录
* @param localPath 本地路径
* @return 下载结果
*/
public static boolean downFile(String ip, int port, String username, String password, String workingDirectory,
String localPath)
{
boolean success = false;
FTPClient ftp = new FTPClient();
try
{
// 连接FTP服务器,如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.connect(ip, port);
// 登录,用户名和密码
ftp.login(username, password);// 登录
// ftp拒绝服务请求
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
{
ftp.disconnect();
return success;
}
// 设置文件的传出方式
client.setFileType(FTPClient.BINARY_FILE_TYPE);
// 设置文件的编码
client.setControlEncoding("UTF-8");
// 设置ftp的初始化目录
ftp.changeWorkingDirectory(workingDirectory);
FTPFile[] fs = ftp.listFiles();
for (FTPFile ff : fs)
{
if (ff.getType() == FTPFile.FILE_TYPE)
{
File localFile = new File(localPath + "/" + ff.getName());
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is);
is.close();
// 如果下载成功了,就把下载的文件从ftp服务器中删除.
ftp.dele(ff.getName());
}
}
ftp.logout();
success = true;
}
catch (IOException e)
{
}
finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException ioe)
{
}
}
}
return success;
}
}
分享到:
相关推荐
【仿FTP上传下载实例】是一个非常适合初学者研究和学习的网络编程项目,它采用VB(Visual Basic)语言编写,提供了完整的源代码。FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,广泛应用...
这个"FTP上传下载实例源码"是使用微软的FTP服务器技术,结合Visual Studio 2008开发环境,实现了一个能够执行文件上传和下载功能的工程代码。 在VS2008中,你可以使用C#或VB.NET作为编程语言来实现FTP客户端的功能...
这个实例源码旨在教你如何利用C#实现FTP下载,从而更好地理解网络操作在实际项目中的应用。 FTP下载的基本流程包括连接到FTP服务器、登录、获取文件列表、选择需要下载的文件以及下载文件本身。在C#中,主要使用`...
通过FTP,程序可以登录到远程服务器,列出目录,下载文件,甚至上传文件。 XML文件常用于存储配置信息,因为它的结构清晰,易于阅读和解析。在这里,我们可能会定义FTP服务器的URL、用户名、密码、目标下载路径等...
这个FTP上传实例提供了可视化的进度反馈,使得用户能够清晰地看到文件上传的进度,提高了用户体验。 FTP上传的核心原理是通过FTP客户端连接到FTP服务器,然后将本地文件分块发送到服务器。在这个过程中,通过跟踪已...
3. **文件传输**:FTP客户端可以通过`STOR`命令上传文件到服务器,使用`RETR`命令下载文件。MFC的`CFtpFileFind`类可以帮助查找服务器上的文件,而`CInternetFile`则用于读写文件。 4. **错误处理**:在FTP操作中,...
【Java FTP任务代码实例】 在Java编程中,FTP(File Transfer Protocol)被广泛用于在网络间传输文件。Apache Commons Net库提供了方便的API来处理FTP任务。以下是一个详细的FTP操作类的实例,它涵盖了连接、登录、...
以下是如何使用Inet控件进行FTP上传的步骤: 1. **初始化Inet控件**:在VB窗体上添加Inet控件,并设置其属性,如`Host`(FTP服务器地址)、`UserName`和`Password`(FTP服务器的登录凭证)。 2. **建立连接**:调用...
**VB API FTP上传下载源代码详解** 在信息技术领域,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。在VB(Visual Basic)环境中,我们可以使用API(Application Programming Interface...
- 网站内容管理:网站管理员通过FTP上传、更新网页内容。 - 数据备份:定期将重要文件通过FTP备份到远程服务器。 - 软件分发:开发者通过FTP发布新版本的软件供用户下载。 了解了FTP的基本概念和工作方式后,...
FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,它允许用户从远程服务器上传、下载文件。在本文中,我们将深入探讨FTP服务器的实例代码,特别是基于VC++的实现。 FTP服务器的主要功能包括管理...
4. **文件上传与下载**:源代码会包含实现FTP上传和下载的函数,可能使用FTP的STOR(存储)命令上传文件,使用RETR(检索)命令下载文件。 5. **目录浏览**:可能通过FTP的LIST和NLST命令获取服务器目录信息,并...
FTP上传涉及到`storeFile()`方法,而下载则使用`retrieveFile()`。 2. CSV文件解析: CSV(Comma Separated Values)文件是一种常见的数据交换格式,通常用于导入和导出表格数据。Java中,可以使用OpenCSV或者...
要上传文件到FTP服务器,可以创建一个`FtpTemplate`实例,然后调用`send`或`sendAndClose`方法,传入FTP服务器的路径和本地文件的输入流。 7. **文件下载** 下载文件则通过调用`get`或`retrieve`方法实现,指定...
4. **匿名FTP**:许多服务器允许匿名FTP访问,用户无需提供认证信息即可浏览和下载部分公开资源。匿名用户的用户名通常是“anonymous”。 5. **FTP客户端软件**:市面上有许多FTP客户端软件,例如FileZilla、WinSCP...
本教程将深入讲解如何使用QT进行FTP(File Transfer Protocol)操作,包括文件的上传、下载、创建文件夹以及删除目录。 FTP是一种基于TCP协议的应用层协议,用于在Internet上进行文件传输。QT库提供了...
在Delphi7中,通过TIdFTP组件可以方便地实现FTP上传和下载功能。TIdFTP组件提供了连接、登录、改变工作目录、上传文件(`Put`方法)、下载文件(`Get`方法)以及断点续传(`Append`方法配合`Resume`属性)等操作。...
总结来说,Java实现FTP上传下载涉及连接管理、文件操作、多线程处理、异常处理等多个方面。使用Apache Commons Net库能简化这些操作,但正确地处理细节和异常情况仍然至关重要。通过理解和实践这些知识点,你将能够...
首先,需要创建一个FtpWebRequest实例,设置其Method属性为"PUT"(上传)或"GET"(下载),然后设置UsePassive为true以使用被动模式,这对于防火墙和NAT环境是必要的。接着,对于上传,使用Stream写入文件数据;对于...
在本文中,我们将深入探讨Java FTP上传、下载以及断点续传的核心概念和实现方法。 1. FTP基本原理: FTP是一种基于TCP/IP协议的应用层协议,主要用于在客户端和服务器之间传输文件。它定义了两组命令和响应,一组...