- 浏览: 18010 次
- 性别:
- 来自: 北京
文章分类
最新评论
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 893package com.my.image; import j ... -
JDK代理模式
2014-07-15 17:08 571第一个类:jobService package com.my. ... -
java反射强制赋值
2014-07-15 16:59 712package com.my.reflect; import ... -
读取properties
2014-07-07 18:15 446package com.my.properties; imp ... -
properties小案例
2014-07-16 17:29 419package com.my.properties; imp ... -
swing窗体天气预报
2014-07-04 17:26 1025第一个类:Weather 天气实体类 package com ... -
Timer小案例
2014-07-04 17:24 626package com.my.timer; import j ... -
io文件复制读写以及打gz和zip压缩包,递归删除文件以及文件夹
2014-07-04 17:15 838package com.my.io; import java ... -
javaMail邮件发送
2014-07-04 17:13 441第一个邮件基本信息类: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服务器、从服务器下载文件以及...
### VB FTP上传下载知识点解析 #### 一、概述 在提供的代码示例中,主要涉及了使用Visual Basic(简称VB)进行FTP(File Transfer Protocol,文件传输协议)上传与下载的功能实现。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作为传输层...
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库,它允许开发者创建出美观且功能...