- 浏览: 17732 次
- 性别:
- 来自: 北京
文章分类
最新评论
package com.my.ftp;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class myFtp {
/**
* 登陆FTP服务器
* @param hostName
* @param port
* @param userName
* @param password
* @return
*/
public static FTPClient loginFtpServer(String hostName,int port,String userName,String password) {
boolean flag = false;
int reply;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(hostName, port);
reply = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){
ftpClient.disconnect();
System.exit(1);
System.err.println("FTP服务器拒绝连接!");
return null;
}
flag=ftpClient.login(userName, password);
if (flag) {
//设置超时时间为5分钟
ftpClient.setDataTimeout(1000*60*5);
//设置当前数据连接模式
ftpClient.enterLocalPassiveMode();
//登陆成功后默认设置文件类型为BINARY,默认是ASCII
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
System.out.println("登陆FTP服务器成功");
}else{
System.err.println("登陆FTP服务器失败!");
return null;
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ftpClient;
}
/**
*
* @param ftpClient FTPClient对象
* @param ftpPath FTP服务器路径
* @param file 要上传的文件
* @param reFileName 重命名文件名
* @param input 文件流
* @return
*/
public static boolean uploadFile(FTPClient ftpClient,String ftpPath,File file,String reFileName,InputStream input){
boolean flag=false;
if (ftpClient!=null && ftpClient.isConnected() && file!=null) {
if (ftpPath==null || ftpPath.isEmpty()) {
ftpPath="/Downloads/";
}
if (reFileName==null || reFileName.isEmpty()) {
reFileName=file.getName();
}
try {
//ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//设置文件路径可以是相对也可是绝对
ftpClient.changeWorkingDirectory(ftpPath);
//文件的缓冲区大小为1024字节
ftpClient.setBufferSize(1024);
//重命名文件,缓冲区流
ftpClient.storeFile(file.getName(), input);
input.close();
//注销FTP登陆
ftpClient.logout();
flag=true;
} catch (IOException e) {
e.printStackTrace();
}finally{
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
return flag;
}
/**
* 在FTP服务器上删除文件
* @param ftpClient FTPClient对象
* @param pathName 要删除的文件名,须是绝对路径如:/Downloads/testFile.avi
* @return
*/
public static boolean deleteFile(FTPClient ftpClient,String pathName){
boolean flag=false;
if(ftpClient!=null&&ftpClient.isConnected()){
try {
flag=ftpClient.deleteFile(pathName);
if (flag) {
System.out.println("文件删除成功");
}
else {
System.err.println("文件删除失败!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
//修改文件名
public static boolean updateFile(FTPClient ftpClient,String ftpPath,String fileName,String reFileName){
boolean flag=false;
if(ftpClient!=null&&ftpClient.isConnected()){
if (ftpPath==null || ftpPath.isEmpty()) {
ftpPath="/Downloads/";
}
if(fileName!=null&&!fileName.isEmpty()&&reFileName!=null&&!reFileName.isEmpty()){
try {
//ftpClient.changeWorkingDirectory(ftpPath);
flag=ftpClient.rename(fileName, reFileName);
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
//
/**
* 下载文件
* @param ftpClient FTPClient对象
* @param ftpPath FTP服务器上的路径
* @param fileName 要下载的文件名
* @param localPath 下载后保存到本地的路径
* @return
*/
public static boolean downLoadFile(FTPClient ftpClient,String ftpPath,String fileName,String localPath){
boolean status=false;
if (ftpClient!=null && ftpClient.isConnected() && fileName!=null && localPath!=null) {
if (ftpPath==null || ftpPath.isEmpty()) {
ftpPath="/Downloads/";
}
try{
//设置文件路径可以是相对也可是绝对
ftpClient.changeWorkingDirectory(ftpPath);
//设置当前数据连接模式
ftpClient.enterLocalPassiveMode();
//获取到改路径下的文件名集合
FTPFile[] fs=ftpClient.listFiles();
File localFile=null;
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
localPath+="/"+ff.getName();
localFile = new File(localPath);
}
}
if (localFile!=null) {
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(localFile));
ftpClient.retrieveFile(fileName, out);
out.close();
}else {
System.err.println("未找到该文件!");
}
ftpClient.logout();
status=true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
return status;
}
/**
* 获取FTP服务器指定目录下的文件列表
* @param ftpClient FTPClient对象
* @param ftpPath FTP服务器上的路径
* @return
*/
public static FTPFile[] getFileNameList(FTPClient ftpClient,String ftpPath){
FTPFile[] fileList=null;
if(ftpClient!=null&&ftpClient.isConnected()){
if (ftpPath==null || ftpPath.isEmpty()) {
ftpPath="/Downloads/";
}
//设置文件路径可以是相对也可是绝对
try {
ftpClient.changeWorkingDirectory(ftpPath);
//设置当前数据连接模式
ftpClient.enterLocalPassiveMode();
//获取到改路径下的文件名集合
fileList=ftpClient.listFiles();
} catch (IOException e) {
e.printStackTrace();
}
}
return fileList;
}
public static void closeFtp(FTPClient ftpClient){
if(ftpClient!=null&&ftpClient.isConnected()){
try {
boolean isLogOut=ftpClient.logout();
if(isLogOut){
System.out.println("已关闭FTP连接");
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭FTP服务器异常!");
}finally{
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭服务器连接异常!");
}
}
}
}
public static void main(String[] args) throws SocketException, IOException {
FTPClient ftpClient=loginFtpServer("127.0.0.1", 21, "Admin", "123456");
File file=new File("E:/testFile.avi");
//上传文件
if (ftpClient.isConnected()&&ftpClient!=null) {
BufferedInputStream input=new BufferedInputStream(new FileInputStream(file));
boolean flag=uploadFile(ftpClient, "", file, "", input);
System.out.println(flag);
}
//删除文件
if (ftpClient.isConnected()&&ftpClient!=null) {
deleteFile(ftpClient, "/Downloads/testFile.avi");
}
//下载文件
if (ftpClient.isConnected()&&ftpClient!=null) {
downLoadFile(ftpClient, "", file.getName(), "C:/");
}
//查看某个目录下所有文件
if (ftpClient.isConnected()&&ftpClient!=null) {
FTPFile[] fileList=getFileNameList(ftpClient, "");
for (FTPFile ff : fileList) {
System.out.println(new String(ff.getName().getBytes("iso-8859-1"),"GBK"));
}
}
//修改文件名--error
if (ftpClient.isConnected()&&ftpClient!=null) {
boolean flag=updateFile(ftpClient,"","/Downloads/testFile - 副本.avi", "/Downloads/testFile_rename.avi");
System.out.println(flag);
}
closeFtp(ftpClient);
}
}
以上代码复制可用,请下载apache下的common-net.jar,我的版本是common-net-3.3.jar
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class myFtp {
/**
* 登陆FTP服务器
* @param hostName
* @param port
* @param userName
* @param password
* @return
*/
public static FTPClient loginFtpServer(String hostName,int port,String userName,String password) {
boolean flag = false;
int reply;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(hostName, port);
reply = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){
ftpClient.disconnect();
System.exit(1);
System.err.println("FTP服务器拒绝连接!");
return null;
}
flag=ftpClient.login(userName, password);
if (flag) {
//设置超时时间为5分钟
ftpClient.setDataTimeout(1000*60*5);
//设置当前数据连接模式
ftpClient.enterLocalPassiveMode();
//登陆成功后默认设置文件类型为BINARY,默认是ASCII
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
System.out.println("登陆FTP服务器成功");
}else{
System.err.println("登陆FTP服务器失败!");
return null;
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ftpClient;
}
/**
*
* @param ftpClient FTPClient对象
* @param ftpPath FTP服务器路径
* @param file 要上传的文件
* @param reFileName 重命名文件名
* @param input 文件流
* @return
*/
public static boolean uploadFile(FTPClient ftpClient,String ftpPath,File file,String reFileName,InputStream input){
boolean flag=false;
if (ftpClient!=null && ftpClient.isConnected() && file!=null) {
if (ftpPath==null || ftpPath.isEmpty()) {
ftpPath="/Downloads/";
}
if (reFileName==null || reFileName.isEmpty()) {
reFileName=file.getName();
}
try {
//ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//设置文件路径可以是相对也可是绝对
ftpClient.changeWorkingDirectory(ftpPath);
//文件的缓冲区大小为1024字节
ftpClient.setBufferSize(1024);
//重命名文件,缓冲区流
ftpClient.storeFile(file.getName(), input);
input.close();
//注销FTP登陆
ftpClient.logout();
flag=true;
} catch (IOException e) {
e.printStackTrace();
}finally{
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
return flag;
}
/**
* 在FTP服务器上删除文件
* @param ftpClient FTPClient对象
* @param pathName 要删除的文件名,须是绝对路径如:/Downloads/testFile.avi
* @return
*/
public static boolean deleteFile(FTPClient ftpClient,String pathName){
boolean flag=false;
if(ftpClient!=null&&ftpClient.isConnected()){
try {
flag=ftpClient.deleteFile(pathName);
if (flag) {
System.out.println("文件删除成功");
}
else {
System.err.println("文件删除失败!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
//修改文件名
public static boolean updateFile(FTPClient ftpClient,String ftpPath,String fileName,String reFileName){
boolean flag=false;
if(ftpClient!=null&&ftpClient.isConnected()){
if (ftpPath==null || ftpPath.isEmpty()) {
ftpPath="/Downloads/";
}
if(fileName!=null&&!fileName.isEmpty()&&reFileName!=null&&!reFileName.isEmpty()){
try {
//ftpClient.changeWorkingDirectory(ftpPath);
flag=ftpClient.rename(fileName, reFileName);
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
//
/**
* 下载文件
* @param ftpClient FTPClient对象
* @param ftpPath FTP服务器上的路径
* @param fileName 要下载的文件名
* @param localPath 下载后保存到本地的路径
* @return
*/
public static boolean downLoadFile(FTPClient ftpClient,String ftpPath,String fileName,String localPath){
boolean status=false;
if (ftpClient!=null && ftpClient.isConnected() && fileName!=null && localPath!=null) {
if (ftpPath==null || ftpPath.isEmpty()) {
ftpPath="/Downloads/";
}
try{
//设置文件路径可以是相对也可是绝对
ftpClient.changeWorkingDirectory(ftpPath);
//设置当前数据连接模式
ftpClient.enterLocalPassiveMode();
//获取到改路径下的文件名集合
FTPFile[] fs=ftpClient.listFiles();
File localFile=null;
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
localPath+="/"+ff.getName();
localFile = new File(localPath);
}
}
if (localFile!=null) {
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(localFile));
ftpClient.retrieveFile(fileName, out);
out.close();
}else {
System.err.println("未找到该文件!");
}
ftpClient.logout();
status=true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
return status;
}
/**
* 获取FTP服务器指定目录下的文件列表
* @param ftpClient FTPClient对象
* @param ftpPath FTP服务器上的路径
* @return
*/
public static FTPFile[] getFileNameList(FTPClient ftpClient,String ftpPath){
FTPFile[] fileList=null;
if(ftpClient!=null&&ftpClient.isConnected()){
if (ftpPath==null || ftpPath.isEmpty()) {
ftpPath="/Downloads/";
}
//设置文件路径可以是相对也可是绝对
try {
ftpClient.changeWorkingDirectory(ftpPath);
//设置当前数据连接模式
ftpClient.enterLocalPassiveMode();
//获取到改路径下的文件名集合
fileList=ftpClient.listFiles();
} catch (IOException e) {
e.printStackTrace();
}
}
return fileList;
}
public static void closeFtp(FTPClient ftpClient){
if(ftpClient!=null&&ftpClient.isConnected()){
try {
boolean isLogOut=ftpClient.logout();
if(isLogOut){
System.out.println("已关闭FTP连接");
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭FTP服务器异常!");
}finally{
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭服务器连接异常!");
}
}
}
}
public static void main(String[] args) throws SocketException, IOException {
FTPClient ftpClient=loginFtpServer("127.0.0.1", 21, "Admin", "123456");
File file=new File("E:/testFile.avi");
//上传文件
if (ftpClient.isConnected()&&ftpClient!=null) {
BufferedInputStream input=new BufferedInputStream(new FileInputStream(file));
boolean flag=uploadFile(ftpClient, "", file, "", input);
System.out.println(flag);
}
//删除文件
if (ftpClient.isConnected()&&ftpClient!=null) {
deleteFile(ftpClient, "/Downloads/testFile.avi");
}
//下载文件
if (ftpClient.isConnected()&&ftpClient!=null) {
downLoadFile(ftpClient, "", file.getName(), "C:/");
}
//查看某个目录下所有文件
if (ftpClient.isConnected()&&ftpClient!=null) {
FTPFile[] fileList=getFileNameList(ftpClient, "");
for (FTPFile ff : fileList) {
System.out.println(new String(ff.getName().getBytes("iso-8859-1"),"GBK"));
}
}
//修改文件名--error
if (ftpClient.isConnected()&&ftpClient!=null) {
boolean flag=updateFile(ftpClient,"","/Downloads/testFile - 副本.avi", "/Downloads/testFile_rename.avi");
System.out.println(flag);
}
closeFtp(ftpClient);
}
}
以上代码复制可用,请下载apache下的common-net.jar,我的版本是common-net-3.3.jar
发表评论
-
JAVA生成缩略图
2014-07-15 17:52 878package com.my.image; import j ... -
JDK代理模式
2014-07-15 17:08 553第一个类:jobService package com.my. ... -
java反射强制赋值
2014-07-15 16:59 701package com.my.reflect; import ... -
读取properties
2014-07-07 18:15 433package com.my.properties; imp ... -
properties小案例
2014-07-16 17:29 401package com.my.properties; imp ... -
swing窗体天气预报
2014-07-04 17:26 1012第一个类:Weather 天气实体类 package com ... -
Timer小案例
2014-07-04 17:24 618package com.my.timer; import j ... -
io文件复制读写以及打gz和zip压缩包,递归删除文件以及文件夹
2014-07-04 17:15 827package com.my.io; import java ... -
javaMail邮件发送
2014-07-04 17:13 427第一个邮件基本信息类:MailSenderInfo pack ...
相关推荐
**VB API FTP上传下载源代码详解** 在信息技术领域,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。在VB(Visual Basic)环境中,我们可以使用API(Application Programming Interface...
在这个场景中,"一个ftp上传下载类(MFC)" 是一个使用MFC构建的类,它封装了FTP协议,使得开发者能够方便地在自己的应用中实现FTP的上传和下载功能。 FTP上传下载类的核心功能包括: 1. **连接与断开**:类应包含...
总的来说,VC++ FTP上传下载涉及网络编程、文件操作和XML处理等多个方面。开发者需要熟悉WinInet API或第三方FTP库的使用,理解FTP协议的工作原理,以及如何在C++中处理XML文件。通过这些技术,可以在VC++环境中实现...
VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用. VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用. VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用.
**Qt4实现FTP上传下载服务器** Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面和移动设备的应用程序开发。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,允许用户从远程主机...
FTP上传下载文件
C# FTP上传下载是开发过程中常见的一项任务,它涉及到网络通信和文件操作。在C#中,我们可以利用System.Net命名空间中的FtpWebRequest和FtpWebResponse类来实现FTP(File Transfer Protocol)的功能。下面将详细介绍...
在这个“FTP上传下载文件demo”项目中,开发者使用C++编程语言在Visual Studio 2010环境下创建了一个功能完备的FTP客户端应用。这个应用能够执行基本的FTP操作,包括上传文件到远程FTP服务器、从服务器下载文件以及...
四、FTP上传下载的进阶功能 1. 递归上传/下载目录:可以遍历本地目录,逐个上传或下载文件。 2. 断点续传:如果文件较大,可以记录已传输的部分,在下次连接时继续上传或下载。 3. 多线程上传/下载:通过多线程同时...
这篇博客文章“qt ftp上传下载”探讨了如何在Qt环境中实现FTP的上传和下载功能。我们将详细解析这个主题,了解相关知识点。 首先,要实现FTP功能,你需要使用Qt库中的QFtp模块。QFtp类提供了FTP客户端的功能,可以...
Java编写的FTP上传下载工具是一种基于Java语言实现的文件传输应用程序,主要功能是与FTP(File Transfer Protocol)服务器进行交互,实现文件的上传和下载。这个工具特别之处在于它支持多用户登录,这意味着不同的...
在本文中,我们将深入探讨FTP上传下载的C#源代码实现及其相关的知识点。 一、FTP基本概念 FTP允许用户在两台计算机之间交换文件,通常涉及一个服务器(提供文件)和一个客户端(请求文件)。它使用TCP作为传输层...
### VB FTP上传下载知识点解析 #### 一、概述 在提供的代码示例中,主要涉及了使用Visual Basic(简称VB)进行FTP(File Transfer Protocol,文件传输协议)上传与下载的功能实现。FTP是一种用于在网络上进行文件...
VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效...
ftp上传下载 linux环境下程序 网络高级程序设计课程实验
"ftp上传下载图片" FTP(File Transfer Protocol,文件传输协议)是一种常用的网络协议,用于在网络上进行文件传输。FTP 协议允许用户在远程服务器上存储和检索文件。在这里,我们将讨论如何使用 C# 语言实现 FTP ...
本篇文章将深入探讨如何利用C#实现FTP上传和下载功能,并结合给定的"FTP上传下载demo"和"demo(upload)、FTPupload"这两个文件名,我们将具体分析其可能包含的代码示例。 首先,让我们了解FTP上传和下载的基本原理...
FTP上传下载的实现,网络编程 FTP SOCKET MFC 网络
Java基于Swing的FTP上传下载程序是一个用户界面友好、功能完备的应用,主要用于通过FTP(File Transfer Protocol)协议实现文件的上传和下载。Swing是Java提供的一个轻量级的GUI库,它允许开发者创建出美观且功能...