`
wengzil
  • 浏览: 35267 次
  • 性别: 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上传下载文件

    C#FTP上传下载

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

    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作为传输层...

    VB FTP上传下载

    ### 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 实效编程 99 FTP上传下载VisualC 实效...

    ftp上传下载 linux环境下程序

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

    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 网络

    Java 基于Swing的FTP上传下载程序

    Java基于Swing的FTP上传下载程序是一个用户界面友好、功能完备的应用,主要用于通过FTP(File Transfer Protocol)协议实现文件的上传和下载。Swing是Java提供的一个轻量级的GUI库,它允许开发者创建出美观且功能...

Global site tag (gtag.js) - Google Analytics