不多说,上代码:
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`这个压缩包,它包含了Apache Commons Net FTP库的2.0版本。这个库对于Java开发者来说,是进行FTP文件传输的重要工具。 FTP是一种用于在互联网上传输...
总结来说,通过Apache Commons Net库,我们可以轻松地在Android应用中实现FTP功能,进行文件的上传、下载、目录操作等,从而实现与远程服务器的数据交换。不过,注意在实际开发中,应根据具体需求选择合适的FTP操作...
使用apache commons-net包实现文件ftp上传
库提供了FTPClient、FTPSSLClient、FTPSSLSocketFactory等类,可以实现FTP的连接、登录、文件上传、下载、删除、重命名等操作,并且支持主动和被动模式,以及SSL/TLS加密。 3. **Telnet功能** Telnet协议在commons...
在这个版本中,我们聚焦于`commons-net-3.6.jar`,它提供了丰富的API和工具,使开发者能够方便地进行FTP文件的上传、下载以及读写操作。这个库不仅简化了FTP操作,还为开发者提供了深入理解其内部工作原理的机会,...
在这个版本中,Apache Commons Net提供了对FTP协议全面的支持,包括连接到FTP服务器、上传和下载文件、创建和删除目录、改变工作目录、处理文件权限等。它的API设计得相当直观,使得开发者能够轻松地进行FTP操作。...
Apache Commons Net提供了丰富的类和方法,使得开发者可以方便地执行FTP任务,如上传、下载文件,创建、删除目录,以及管理文件权限等。 **FTPClient类** 是这个库中的核心,它实现了FTP协议的大部分功能。首先,你...
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
版本3.5是这个库的一个稳定发行版,提供了丰富的功能和优化,使得开发者可以轻松地在Java应用程序中实现在FTP服务器上进行文件的上传、下载以及其他操作。 Apache Commons Net库包括了以下关键知识点: 1. **FTP...
在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...
1. **commons-net-3.6.jar**:这是主库文件,包含了所有实现网络协议和实用工具的类。开发者可以将这个库导入到他们的项目中,直接调用预定义的API来执行如FTP、NNTP、SMTP等网络操作,以及TCP和UDP连接管理。 2. *...
标题中的“利用commons-net包实现ftp上传下载例子”是指通过Apache Commons Net库来实现FTP(File Transfer Protocol)的上传和下载功能。Apache Commons Net是Apache软件基金会开发的一个Java库,它提供了多种网络...
开发者可以借助它轻松实现文件的上传、下载和其他FTP功能,同时也可以利用库中的其他工具类来处理各种网络协议。在实际开发中,合理利用Apache Commons Net能显著提高代码效率,降低网络编程的复杂性。
Apache Commons Net 1.4.1提供了一个全面的Java实现,支持FTP的各种操作,包括上传、下载、列出目录、创建和删除文件等。这个库不仅简化了FTP交互,还处理了许多底层的网络细节,如连接管理和错误处理,使得开发者...
对于Android FTP上传文件,首先需要添加对应的Apache Commons Net库到项目的依赖。在Android Studio中,可以在build.gradle文件中添加以下依赖(这里以版本3.6为例): ```groovy dependencies { implementation '...
在`commons-net-3.3.jar`中,FTPClient类是核心,它实现了完整的FTP协议。开发者可以通过创建FTPClient实例,然后连接到FTP服务器,进行登录、设置传输模式(ASCII或BINARY)、改变工作目录、上传和下载文件等一系列...
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...
这个库,如"commons-net-ftp-2.0.rar"所示,包含了一系列的JAR文件,使得开发者能够轻松地构建FTP客户端应用。 FTP(File Transfer Protocol)是一种用于在Internet上可靠地传输文件的协议。Apache Commons Net库为...
总结起来,通过使用Apache Commons Net.jar,我们可以轻松地创建一个FTP工具类,实现FTP连接、文件上传和下载等操作。这个库不仅简化了网络编程的复杂性,还提供了稳定和高效的FTP客户端实现。在实际项目中,这样的...
- Commons Net提供了完善的FTP客户端实现,可以进行文件的上传、下载、删除等操作,支持FTP、FTPS(FTP over SSL/TLS)和SFTP(SSH File Transfer Protocol)。 - 在不同版本中,FTP客户端的性能和稳定性得到了...