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

apache的commons-net实现FTP上传,下载文件

阅读更多

不多说,上代码:

 

package com.book.service;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;

public class FtpService {

	/**
	 * Description: 向FTP服务器上传文件
	 * @param url FTP服务器hostname
	 * @param port FTP服务器端口
	 * @param username FTP登录账号
	 * @param password FTP登录密码
	 * @param path FTP服务器保存目录
	 * @param filename 上传到FTP服务器上的文件名
	 * @param input 输入流
	 * @return 成功返回true,否则返回false
	 */
	public static boolean uploadFile(String url, int port, String username, String password, String path, String filename, InputStream input) {
		boolean success = false;
		FTPClient ftp = new FTPClient();
		try {
			int reply;
			ftp.connect(url, port);//连接FTP服务器
			//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
			ftp.login(username, password);//登录
			reply = ftp.getReplyCode();
			if (!FTPReply.isPositiveCompletion(reply)) {
				ftp.disconnect();
				return success;
			}
			ftp.changeWorkingDirectory(path);
			ftp.storeFile(filename, input);

			input.close();
			ftp.logout();
			success = true;
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (ftp.isConnected()) {
				try {
					ftp.disconnect();
				} catch (IOException ioe) {
				}
			}
		}
		return success;
	}

	/**
	 * Description: 从FTP服务器下载文件
	 * @param url FTP服务器hostname
	 * @param port FTP服务器端口
	 * @param username FTP登录账号
	 * @param password FTP登录密码
	 * @param remotePath FTP服务器上的相对路径
	 * @param fileName 要下载的文件名
	 * @param localPath 下载后保存到本地的路径
	 * @return
	 */
	public static boolean downFile(String url, int port, String username, String password, String remotePath, String fileName, String localPath) {
		boolean success = false;
		FTPClient ftp = new FTPClient();
		try {
			int reply;
			ftp.connect(url, port);
			//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
			ftp.login(username, password);//登录
			reply = ftp.getReplyCode();
			if (!FTPReply.isPositiveCompletion(reply)) {
				ftp.disconnect();
				return success;
			}
			ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
			FTPFile[] fs = ftp.listFiles();
			for (FTPFile ff : fs) {
				if (ff.getName().equals(fileName)) {
					File localFile = new File(localPath + "/" + ff.getName());

					OutputStream is = new FileOutputStream(localFile);
					ftp.retrieveFile(ff.getName(), is);
					is.close();
				}
			}

			ftp.logout();
			success = true;
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (ftp.isConnected()) {
				try {
					ftp.disconnect();
				} catch (IOException ioe) {
				}
			}
		}
		return success;
	}

}

 

测试代码:

 

	@Test
	public void testUpLoadFromDisk() {
		try {
			FileInputStream in = new FileInputStream(new File("data\\新建文本文档.txt"));
			boolean flag = ftpService.uploadFile("192.168.100.214", 21, "***", "***", "/", "test.txt", in);
			System.out.println(flag);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	@Test
	public void downloadFromFtp() {
		Assert.assertTrue(ftpService.downFile("192.168.100.214", 21, "***", "***", "/", "test.txt", "D:\\"));
	}

 

 

这里使用的apache的commons-net包,版本2.0

分享到:
评论

相关推荐

    commons-net-ftp-2.0.jar.zip

    在这个特定的案例中,我们关注的是`commons-net-ftp-2.0.jar.zip`这个压缩包,它包含了Apache Commons Net FTP库的2.0版本。这个库对于Java开发者来说,是进行FTP文件传输的重要工具。 FTP是一种用于在互联网上传输...

    Android 利用commons-net-3.3实现ftp上传下载Demo

    总结来说,通过Apache Commons Net库,我们可以轻松地在Android应用中实现FTP功能,进行文件的上传、下载、目录操作等,从而实现与远程服务器的数据交换。不过,注意在实际开发中,应根据具体需求选择合适的FTP操作...

    apache commons-net-3.5.jar

    使用apache commons-net包实现文件ftp上传

    commons-net-jar包.zip

    库提供了FTPClient、FTPSSLClient、FTPSSLSocketFactory等类,可以实现FTP的连接、登录、文件上传、下载、删除、重命名等操作,并且支持主动和被动模式,以及SSL/TLS加密。 3. **Telnet功能** Telnet协议在commons...

    commons-net-3.6.jar

    在这个版本中,我们聚焦于`commons-net-3.6.jar`,它提供了丰富的API和工具,使开发者能够方便地进行FTP文件的上传、下载以及读写操作。这个库不仅简化了FTP操作,还为开发者提供了深入理解其内部工作原理的机会,...

    apache的FTP包commons-net-1.4.1.jar,jakarta-oro-2.0.8.jar

    在这个版本中,Apache Commons Net提供了对FTP协议全面的支持,包括连接到FTP服务器、上传和下载文件、创建和删除目录、改变工作目录、处理文件权限等。它的API设计得相当直观,使得开发者能够轻松地进行FTP操作。...

    commons-net实现ftp帮助文档 api

    Apache Commons Net提供了丰富的类和方法,使得开发者可以方便地执行FTP任务,如上传、下载文件,创建、删除目录,以及管理文件权限等。 **FTPClient类** 是这个库中的核心,它实现了FTP协议的大部分功能。首先,你...

    apache-jakarta旗下的所有开源项目jar文件

    apache-jakarta旗下的所有开源...apache-jakarta-commons-net-ftp.jar apache-jakarta-oro.jar apache-jakarta-oro-2.0.8.jar commons-io-2.1-bin commons-logging-1.1.1-bin commons-modeler-2.0.1 commons-net-1.4.1

    apache commons-net-3.5

    版本3.5是这个库的一个稳定发行版,提供了丰富的功能和优化,使得开发者可以轻松地在Java应用程序中实现在FTP服务器上进行文件的上传、下载以及其他操作。 Apache Commons Net库包括了以下关键知识点: 1. **FTP...

    用org.apache.commons.net.ftp.FTPClient包实现简单文件下载

    在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...

    commons-net-3.6

    1. **commons-net-3.6.jar**:这是主库文件,包含了所有实现网络协议和实用工具的类。开发者可以将这个库导入到他们的项目中,直接调用预定义的API来执行如FTP、NNTP、SMTP等网络操作,以及TCP和UDP连接管理。 2. *...

    利用commons-net包实现ftp上传下载例子

    标题中的“利用commons-net包实现ftp上传下载例子”是指通过Apache Commons Net库来实现FTP(File Transfer Protocol)的上传和下载功能。Apache Commons Net是Apache软件基金会开发的一个Java库,它提供了多种网络...

    commons-net-3.6 jar包.zip

    开发者可以借助它轻松实现文件的上传、下载和其他FTP功能,同时也可以利用库中的其他工具类来处理各种网络协议。在实际开发中,合理利用Apache Commons Net能显著提高代码效率,降低网络编程的复杂性。

    commons-net-1.4.1.jar

    Apache Commons Net 1.4.1提供了一个全面的Java实现,支持FTP的各种操作,包括上传、下载、列出目录、创建和删除文件等。这个库不仅简化了FTP交互,还处理了许多底层的网络细节,如连接管理和错误处理,使得开发者...

    commons-net-3.3-3.4-3.5-3.6.zip

    对于Android FTP上传文件,首先需要添加对应的Apache Commons Net库到项目的依赖。在Android Studio中,可以在build.gradle文件中添加以下依赖(这里以版本3.6为例): ```groovy dependencies { implementation '...

    commons-net-3.3.jar

    在`commons-net-3.3.jar`中,FTPClient类是核心,它实现了完整的FTP协议。开发者可以通过创建FTPClient实例,然后连接到FTP服务器,进行登录、设置传输模式(ASCII或BINARY)、改变工作目录、上传和下载文件等一系列...

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...

    commons-net-ftp-2.0.rar

    这个库,如"commons-net-ftp-2.0.rar"所示,包含了一系列的JAR文件,使得开发者能够轻松地构建FTP客户端应用。 FTP(File Transfer Protocol)是一种用于在Internet上可靠地传输文件的协议。Apache Commons Net库为...

    使用Apache commons-net.jar开发FTP工具类

    总结起来,通过使用Apache Commons Net.jar,我们可以轻松地创建一个FTP工具类,实现FTP连接、文件上传和下载等操作。这个库不仅简化了网络编程的复杂性,还提供了稳定和高效的FTP客户端实现。在实际项目中,这样的...

    commons-net-3.1.jar,3.3,3.6版本

    - Commons Net提供了完善的FTP客户端实现,可以进行文件的上传、下载、删除等操作,支持FTP、FTPS(FTP over SSL/TLS)和SFTP(SSH File Transfer Protocol)。 - 在不同版本中,FTP客户端的性能和稳定性得到了...

Global site tag (gtag.js) - Google Analytics