不多说,上代码:
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
分享到:
相关推荐
apache commons-net-3.5 实现 FTP 上传文件的神器,拿走不谢! 主要涉及上传文件的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
Java apache-commons-net Ftp 进行文件、文件夹的上传下载及日志的输出(3.0.1版本),Android可用
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...
使用apache commons-net包实现文件ftp上传
jar包,亲测可用
市面上的大部分jar包下载了都不可用,这个保证能用!包是二合一打包的! apache的FTP可以解决sun的ftp在操作过程中遇到中文会乱码的问题,用法大同小异,看API就会了!
包含commons-net-3.4.jar,commons-net-3.4-sources.jar,commons-net-examples-3.4.jar包,ftp上传主要依靠commons-net-3.4.jar
Java apache-commons-net Ftp 进行文件、文件夹的上传下载及日志的输出(3.3版本),Android可用
NULL 博文链接:https://vakinge.iteye.com/blog/487486
NULL 博文链接:https://yangmeng.iteye.com/blog/2077964
使用JDK1.8、SpringBoot2.2.10.RELEASE、lombok1.18.8、guava23.0、hutool5.3.10、commons-pool2 2.7.0、tika1.22等实现多Ftp连接池实现,通过守护线程实现连接池内连接可用性校验,配置最大、最小连接个数防止Ftp...
您可以从我们的下载源代码和二进制文件。 或者,您可以从中央Maven存储库中提取它: < groupId>commons-net</ groupId> < artifactId>commons-net</ artifactId> < version>3.8.0 贡献 我们通过GitHub接受...
JAVA,ftp开发客户端用到的四个JAR包,是apache组织对FTP客户端编程的封装。
.net.ftp.FTPClient jar ,exaple, commons-net-2.0.jar
commons各种jar包下载 commons-beanutils-1.8.3.jar commons-codec-1.7.jar commons-collections-3.2.1.jar commons-dbcp-1.4.jar ...commons-net-ftp-2.0.jar commons-pool-1.3.jar common-utils.jar
org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能
android 上的ftp服务器例子,通过ApacheFtpServer实现,依赖以下jar包: commons-...太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
org.apache.commons.net.ftp.FTPClient的最新jar报
基于 Apache Commons Net 实现javaFTP上传.pdf