`
wengzil
  • 浏览: 35546 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Ftp 上传下载

阅读更多

package com.tobacco.ermsuite.interfaces.util;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

 

import org.apache.commons.net.ftp.FTP;

import org.apache.commons.net.ftp.FTPClient;

import org.apache.commons.net.ftp.FTPFile;

import org.apache.commons.net.ftp.FTPReply;

 

public class FtpUtil {

private FTPClient ftpClient;

public static final int BINARY_FILE_TYPE = FTP.BINARY_FILE_TYPE;

public static final int ASCII_FILE_TYPE = FTP.ASCII_FILE_TYPE;

 

/**

* @param server

*            ftp服务器地址(IP)

* @param username

*            ftp服务器登陆用户

* @param password

* @return 是否连接成功

*/

public boolean connectServer(String servername, int port, String username,

String password) {

boolean result = false;

ftpClient = new FTPClient();

try {

ftpClient.connect(servername, port);

ftpClient.setControlEncoding("GBK");

if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {

if (ftpClient.login(username, password)) {

result = true;

}

}

} catch (Exception e) {

disconnect();

e.printStackTrace();

}

return result;

}

 

/**

* @param server

*            ftp服务器地址

* @param username

*            ftp服务器登陆用户

* @param password

*/

 

public boolean connectServer(String servername, int port, String username,

String password, String path) {

boolean result = false;

result = connectServer(servername, port, username, password);

if (path.length() != 0 && result) {

try {

changeDirectory(path);

} catch (IOException e) {

result = false;// 设置目录失败

e.printStackTrace();

}

}

return result;

}

 

/**

* 断开与远程服务器的连接

*/

public void disconnect() {

if (ftpClient != null && ftpClient.isConnected()) {

try {

ftpClient.disconnect();

} catch (IOException e) {

e.printStackTrace();

}

}

}

 

public void setFileType(int fileType) throws IOException {

ftpClient.setFileType(fileType);

}

 

public boolean uploadFile(String fileName, String newName)

throws IOException {

boolean flag = false;

InputStream iStream = null;

try {

iStream = new FileInputStream(fileName);

flag = ftpClient.storeFile(newName, iStream);

} catch (IOException e) {

flag = false;

} finally {

if (iStream != null) {

iStream.close();

}

}

return flag;

}

 

public boolean uploadFile(String fileName) throws IOException {

return uploadFile(fileName, fileName);

}

 

public boolean uploadFile(InputStream iStream, String newName)

throws IOException {

boolean flag = false;

try {

flag = ftpClient.storeFile(newName, iStream);

} catch (IOException e) {

flag = false;

} finally {

if (iStream != null) {

iStream.close();

}

}

return flag;

}

 

public boolean download(String remoteFileName, String localFileName)

throws IOException {

boolean flag = false;

File outfile = new File(localFileName);

OutputStream oStream = null;

try {

oStream = new FileOutputStream(outfile);

flag = ftpClient.retrieveFile(remoteFileName, oStream);

} catch (IOException e) {

flag = false;

} finally {

oStream.close();

}

return flag;

}

 

public InputStream downFile(String sourceFileName) throws IOException {

return ftpClient.retrieveFileStream(sourceFileName);

}

 

public boolean changeDirectory(String path) throws IOException {

return ftpClient.changeWorkingDirectory(path);

}

 

public boolean createDirectory(String pathName) throws IOException {

return ftpClient.makeDirectory(pathName);

}

 

public boolean removeDirectory(String path) throws IOException {

return ftpClient.removeDirectory(path);

}

 

// delete all subDirectory and files.

public boolean removeDirectory(String path, boolean isAll)

throws IOException {

if (!isAll) {

return removeDirectory(path);

}

FTPFile[] ftpFileArr = ftpClient.listFiles(path);

if (ftpFileArr == null || ftpFileArr.length == 0) {

return removeDirectory(path);

}

for (FTPFile ftpFile : ftpFileArr) {

String name = ftpFile.getName();

if (ftpFile.isDirectory()) {

System.out.println("* [sD]Delete subPath [" + path + "/" + name

+ "]");

removeDirectory(path + "/" + name, true);

} else if (ftpFile.isFile()) {

System.out.println("* [sF]Delete file [" + path + "/" + name

+ "]");

deleteFile(path + "/" + name);

} else if (ftpFile.isSymbolicLink()) {

 

} else if (ftpFile.isUnknown()) {

 

}

}

return ftpClient.removeDirectory(path);

}

 

// Check the path is exist; exist return true, else false.

public boolean existDirectory(String path) throws IOException {

boolean flag = false;

FTPFile[] ftpFileArr = ftpClient.listFiles(path);

for (FTPFile ftpFile : ftpFileArr) {

if (ftpFile.isDirectory()

&& ftpFile.getName().equalsIgnoreCase(path)) {

flag = true;

break;

}

}

return flag;

}

 

public List<String> getFileList(String path) throws IOException {

FTPFile[] ftpFiles = ftpClient.listFiles(path);

List<String> retList = new ArrayList<String>();

if (ftpFiles == null || ftpFiles.length == 0) {

return retList;

}

for (FTPFile ftpFile : ftpFiles) {

if (ftpFile.isFile()) {

retList.add(ftpFile.getName());

}

}

return retList;

}

 

public boolean deleteFile(String pathName) throws IOException {

return ftpClient.deleteFile(pathName);

}

 

}

 

分享到:
评论

相关推荐

    VB API 实现FTP上传下载源代码

    **VB API FTP上传下载源代码详解** 在信息技术领域,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。在VB(Visual Basic)环境中,我们可以使用API(Application Programming Interface...

    一个ftp上传下载类(MFC)

    在这个场景中,"一个ftp上传下载类(MFC)" 是一个使用MFC构建的类,它封装了FTP协议,使得开发者能够方便地在自己的应用中实现FTP的上传和下载功能。 FTP上传下载类的核心功能包括: 1. **连接与断开**:类应包含...

    VC++ FTP上传下载

    总的来说,VC++ FTP上传下载涉及网络编程、文件操作和XML处理等多个方面。开发者需要熟悉WinInet API或第三方FTP库的使用,理解FTP协议的工作原理,以及如何在C++中处理XML文件。通过这些技术,可以在VC++环境中实现...

    VB6 FTP 上传 下载 源代码

    VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用. VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用. VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用.

    Qt4实现ftp上传下载服务器

    **Qt4实现FTP上传下载服务器** Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面和移动设备的应用程序开发。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,允许用户从远程主机...

    C# FTP上传下载文件

    FTP上传下载文件

    ftp上传下载器

    ### FTP上传下载器知识点概述 #### 一、FTP服务组件安装与配置 1. **安装FTP服务组件**: - **背景**:FTP (File Transfer Protocol) 服务组件并非Windows操作系统默认安装的一部分,因此需要手动安装该组件才能...

    C#FTP上传下载

    C# FTP上传下载是开发过程中常见的一项任务,它涉及到网络通信和文件操作。在C#中,我们可以利用System.Net命名空间中的FtpWebRequest和FtpWebResponse类来实现FTP(File Transfer Protocol)的功能。下面将详细介绍...

    VB FTP上传下载

    ### VB FTP上传下载知识点解析 #### 一、概述 在提供的代码示例中,主要涉及了使用Visual Basic(简称VB)进行FTP(File Transfer Protocol,文件传输协议)上传与下载的功能实现。FTP是一种用于在网络上进行文件...

    FTP上传下载文件demo

    在这个“FTP上传下载文件demo”项目中,开发者使用C++编程语言在Visual Studio 2010环境下创建了一个功能完备的FTP客户端应用。这个应用能够执行基本的FTP操作,包括上传文件到远程FTP服务器、从服务器下载文件以及...

    ftp上传下载java代码

    四、FTP上传下载的进阶功能 1. 递归上传/下载目录:可以遍历本地目录,逐个上传或下载文件。 2. 断点续传:如果文件较大,可以记录已传输的部分,在下次连接时继续上传或下载。 3. 多线程上传/下载:通过多线程同时...

    qt ftp上传下载

    这篇博客文章“qt ftp上传下载”探讨了如何在Qt环境中实现FTP的上传和下载功能。我们将详细解析这个主题,了解相关知识点。 首先,要实现FTP功能,你需要使用Qt库中的QFtp模块。QFtp类提供了FTP客户端的功能,可以...

    java写的FTP上传下载工具(支持多用户)

    Java编写的FTP上传下载工具是一种基于Java语言实现的文件传输应用程序,主要功能是与FTP(File Transfer Protocol)服务器进行交互,实现文件的上传和下载。这个工具特别之处在于它支持多用户登录,这意味着不同的...

    FTP上传下载 C#源代码

    在本文中,我们将深入探讨FTP上传下载的C#源代码实现及其相关的知识点。 一、FTP基本概念 FTP允许用户在两台计算机之间交换文件,通常涉及一个服务器(提供文件)和一个客户端(请求文件)。它使用TCP作为传输层...

    VisualC 实效编程 99 FTP上传下载

    VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效...

    ftp上传下载 linux环境下程序

    ftp上传下载 linux环境下程序 网络高级程序设计课程实验

    c++ 下vs2017 下ftp 上传下载功能实现

    总的来说,实现C++中VS2017下的FTP上传下载功能,需要理解libcurl库的工作原理,熟悉其API接口,并正确配置项目以链接和使用libcurl。通过编写和调试代码,可以创建出满足需求的FTP客户端应用程序。

    ftp上传下载图片

    "ftp上传下载图片" FTP(File Transfer Protocol,文件传输协议)是一种常用的网络协议,用于在网络上进行文件传输。FTP 协议允许用户在远程服务器上存储和检索文件。在这里,我们将讨论如何使用 C# 语言实现 FTP ...

    c# FTP上传下载demo

    本篇文章将深入探讨如何利用C#实现FTP上传和下载功能,并结合给定的"FTP上传下载demo"和"demo(upload)、FTPupload"这两个文件名,我们将具体分析其可能包含的代码示例。 首先,让我们了解FTP上传和下载的基本原理...

    FTP上传下载的实现,网络编程

    FTP上传下载的实现,网络编程 FTP SOCKET MFC 网络

Global site tag (gtag.js) - Google Analytics