JAVA中使用FTPClient上传下载

简介: 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件,我创建的是mvn项目,所以在pom.
在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件,我创建的是mvn项目,所以在pom.xml文件中添加依赖:
<!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/oro/oro -->
<dependency>
    <groupId>oro</groupId>
    <artifactId>oro</artifactId>
    <version>2.0.8</version>
</dependency>

自己写代码前可以先看下官方的API,官网写的还是很详细的(http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html),简单截个图看下:

好了,简单写个例子,很简单,一看就明白了
/**
 * 向FTP服务器上传文件
 *
 * @param url        FTP服务器url
 * @param port       FTP服务器端口
 * @param username
 * @param password
 * @param path       本地文件目录
 * @param remoteFile FTP服务器保存文件名
 */
public void sendToServer(String url, int port, String username, String password,
                         String path, String remoteFile) {
    //创建ftp客户端
    FTPClient ftpClient = new FTPClient();
    ftpClient.setControlEncoding("GBK");
    try {
        //链接ftp服务器
        ftpClient.connect(url, port);
        //登录ftp
        ftpClient.login(username, password);
        int reply = ftpClient.getReplyCode();
        System.out.println(reply);
        //如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限下面有详细的解释。
        if (!FTPReply.isPositiveCompletion(reply)) {
            ftpClient.disconnect();
            return;
        }
        ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

        ftpClient.changeWorkingDirectory("/data");//修改工作目录
        File file = new File(path);
        InputStream input = new FileInputStream(file);
        ftpClient.storeFile(remoteFile, input);//文件名若是不指定就会上传到root目录下
        input.close();
        ftpClient.logout();

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (ftpClient.isConnected()) {
            try {
                ftpClient.disconnect();
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }

    }

}

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

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

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

参考:
相关文章
|
3月前
|
存储 Java Windows
Java21 JDK下载安装及Windows环境变量配置
JDK是Java的开发工具包,要进行Java学习或开发之前,需先下载安装,下载地址如下:提示:这网址里面有三个扩展名的文件,分别是“.zip”、“.exe”和“.msi”,鄙人选择的是.exe的文件,下方的安装和环境的配置也是安装该文件的安装程序进行的。
279 2
|
5月前
|
Java
Java实现多文件打包成压缩包下载
Java实现多文件打包成压缩包下载
165 0
|
1月前
|
数据采集 JavaScript 前端开发
使用HtmlUnit库的Java下载器:下载TikTok视频
使用Java和HtmlUnit构建TikTok视频下载器,模拟浏览器行为,绕过访问限制。通过爬虫代理配置代理服务器,隐藏真实IP,多线程技术提升下载效率。示例代码展示如何设置HtmlUnit,创建代理,启用JavaScript,下载并处理视频链接。学习了页面模拟、JavaScript交互、代理使用及多线程技术,为实际爬虫项目提供参考。
使用HtmlUnit库的Java下载器:下载TikTok视频
|
5月前
|
IDE 安全 Java
Java安装教程 - 从下载到配置环境变量,轻松掌握Java的安装步骤
Java安装教程 - 从下载到配置环境变量,轻松掌握Java的安装步骤
|
1月前
|
存储 前端开发 Java
[java后端研发]——文件上传与下载(2种方式)
[java后端研发]——文件上传与下载(2种方式)
|
5月前
|
Java
java代码实现使用网络地址下载文件
java代码实现使用网络地址下载文件
|
2月前
|
Java
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件
|
2月前
|
安全 IDE Java
【2024java面试题无需C币下载】终结空指针异常:Java开发者的生存指南
【2024java面试题无需C币下载】终结空指针异常:Java开发者的生存指南
45 1
|
2月前
|
缓存 Java 数据库
2024java面试题无需C币下载 速度之战:全方位解决Java接口慢响应问题
2024java面试题无需C币下载 速度之战:全方位解决Java接口慢响应问题
73 1
|
3月前
|
JavaScript 小程序 Java
基于Java的大学生平时成绩量化管理系统设计与实现(亮点:点赞评论、上传下载视频资源、多用户论坛交流)
基于Java的大学生平时成绩量化管理系统设计与实现(亮点:点赞评论、上传下载视频资源、多用户论坛交流)
50 0