Java中实现FTP上传下载文件的功能,完整代码

使用java进行ftp文件上传下载demo(含jar) 使用java进行ftp文件上传下载demo(含jar),项目能直接运行 立即下载
Java中实现FTP上传下载文件的功能,完整代码
 
  • 发表于 2年前 
  • 阅读 3782 
  • 收藏 27 
  • 点赞 2 
  • 评论 4

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上穿件文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码:

package ftpDemo;    
    import java.io.DataOutputStream;    
    import java.io.InputStream;    
    import java.io.OutputStream;    
    import sun.net.TelnetInputStream;    
   import sun.net.TelnetOutputStream;    
    import sun.net.ftp.FtpClient;    
    public class ftpUtil {    
    // 上传文件至FTP通用方法    
    public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){    
        try {    
            String ftpHost = kmConfig.getFtpHost();    
            int port = kmConfig.getFtpPort();    
            String userName = kmConfig.getFtpUser();    
            String passWord = kmConfig.getFtpPassword();    
            String path = kmConfig.getFtpPath();    
            FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。    
            ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码    
            ftpClient.binary();    
            ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。    
            TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName为上传的文件名    
            DataOutputStream dataOut = new DataOutputStream(telnetOut);    
            byte buffer[] = new byte[ * ];    
            int count = ;    
            while ((count = is.read(buffer)) != -) {    
                dataOut.write(buffer, , count);    
            }    
            telnetOut.close();    
            dataOut.close();    
            ftpClient.closeServer();    
        } catch (Exception e) {    
            System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");    
        }    
    }    
    // 删除文件至FTP通用方法    
    public static void deleteFileFtp(KmConfig kmConfig,String fileName){    
        try {    
            String ftpHost = kmConfig.getFtpHost();    
            int port = kmConfig.getFtpPort();    
            String userName = kmConfig.getFtpUser();    
            String passWord = kmConfig.getFtpPassword();    
            String path = kmConfig.getFtpPath();    
            FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。    
            ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码    
            ftpClient.binary();    
            ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。    
            try {    
                ftpClient.sendServer("dele " + fileName + "\r\n");    
            } catch (Exception e) {    
                System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动");    
            }    
            ftpClient.closeServer();    
        } catch (Exception e) {    
            System.out.println("删除文件失败!");    
        }    
    }    
    // 下载ftp文件    
    public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){    
        try {    
            String ftpHost = kmConfig.getFtpHost();    
            int port = kmConfig.getFtpPort();    
            String userName = kmConfig.getFtpUser();    
            String passWord = kmConfig.getFtpPassword();    
            String path = kmConfig.getFtpPath();    
            FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。    
            ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码    
            ftpClient.binary();    
            ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。    
            try {    
                TelnetInputStream in = ftpClient.get(fileName);    
                byte[] bytes = new byte[];    
                int cnt=;    
                while ((cnt=in.read(bytes,,bytes.length)) != -) {    
                    outputStream.write(bytes, , cnt);    
                }    
                outputStream.close();    
                in.close();    
            } catch (Exception e) {    
                ftpClient.closeServer();    
                e.printStackTrace();    
            }    
            ftpClient.closeServer();    
        } catch (Exception e) {    
            System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");    
        }    
    }    
    //在ftp服务器上传件文件夹    
        public boolean createDir(String path,FtpClient ftpClient) throws Exception{    
                //进入到home文件夹下    
                ftpClient.cd("/home");    
                //创建远程文件夹    
               //远程命令包括    
               //USER    PORT    RETR    ALLO    DELE    SITE    XMKD    CDUP    FEAT<br>    
    //          PASS    PASV    STOR    REST    CWD     STAT    RMD     XCUP    OPTS<br>    
    //          ACCT    TYPE    APPE    RNFR    XCWD    HELP    XRMD    STOU    AUTH<br>    
    //          REIN    STRU    SMNT    RNTO    LIST    NOOP    PWD     SIZE    PBSZ<br>    
    //          QUIT    MODE    SYST    ABOR    NLST    MKD     XPWD    MDTM    PROT<br>    
    //               在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>    
    //                    ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>    
    //                    ftpclient.readServerResponse一定要在sendServer后调用<br>    
    //                    nameList("/test")获取指目录下的文件列表<br>    
    //                    XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>    
    //                    XRMD删除目录<br>    
    //                    DELE删除文件<br>    
           //通过远程命令 穿件一个files文件夹    
            ftpClient.sendServer("MKD "+ path + "\r\n");    
            //这个方法必须在 这两个方法中间调用 否则 命令不管用    
            ftpClient.binary();    
            ftpClient.readServerResponse();    
            return false;    
        }    
    /**    
      * 检查文件夹是否存在    
      * @param dir    
      * @param ftpClient    
      * @return    
      */    
        public boolean isDirExist(String dir, FtpClient ftpClient) {    
             try {    
                ftpClient.cd(dir);    
            } catch (Exception e) {    
                return false;    
            }    
            return true;    
        }    
    }

KmConfig.java代码如下:定义FTP服务器参数,包括登录的用户名密码之类的。

package ftpDemo;

public class KmConfig {

    //主机ip

    private String FtpHost = "";

    //端口号

    private int FtpPort;

    //ftp用户名

    private String FtpUser = "";

    //ftp密码

    private String FtpPassword = "";

    //ftp中的目录

    private String FtpPath = "";

    public String getFtpHost() {

        return FtpHost;

    }

    public void setFtpHost(String ftpHost) {

        FtpHost = ftpHost;

    }

    public int getFtpPort() {

        return FtpPort;

    }

    public void setFtpPort(int ftpPort) {

        FtpPort = ftpPort;

    }

    public String getFtpUser() {

        return FtpUser;

    }

    public void setFtpUser(String ftpUser) {

        FtpUser = ftpUser;

    }

    public String getFtpPassword() {

        return FtpPassword;

    }

    public void setFtpPassword(String ftpPassword) {

        FtpPassword = ftpPassword;

    }

    public String getFtpPath() {

        return FtpPath;

    }

    public void setFtpPath(String ftpPath) {

        FtpPath = ftpPath;

    }

}

下面是测试代码:

package ftpDemo;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.InputStream;

public class Test {

    public static void main(String[] args) {

        //设置ftp

        KmConfig km = new KmConfig();

        km.setFtpHost("...");

        km.setFtpPort();

        km.setFtpUser("test");

        km.setFtpPassword("");

        km.setFtpPath("KM");

        //上传到ftp

        ftpUtil util=new ftpUtil();

        File file = new File("F:/文章.jpg");

        InputStream in;

        try {

            in = new FileInputStream(file);

            util.upLoadFileFtp(km, in, "更改后的名字.jpg");

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}


Carl_ 
粉丝  37
 
博文  385
 
码字总数  12168
评论  (4)
Ctrl+Enter 
   
边城高守
挺实用的,顶一个
Carl_
引用来自“边城高守”的评论

挺实用的,顶一个

我也是复制的..哈哈哈哈..大家共勉
T-Vision甜甜甜
import sun.net.TelnetInputStream; 
import sun.net.TelnetOutputStream; 
import sun.net.ftp.FtpClient; 这些包在哪里下载啊 或者maven怎么配置啊
Carl_
引用来自“T-Vision甜甜甜”的评论

import sun.net.TelnetInputStream; 
import sun.net.TelnetOutputStream; 
import sun.net.ftp.FtpClient; 这些包在哪里下载啊 或者maven怎么配置啊

apache的jar包吧...忘记了
java FTP操作demo javaFTP目录、文件操作。 立即下载

相关推荐

java中实现ftp下载功能

java中实现ftp下载功能,支持断点下载

FTP文件上传Java代码实操

FTP文件上传Java代码

weixin_43749064的博客 1479

ftp上传下载代码

linux c ftp上下传文件.ftp下载文件协议,利用libcurl静态库实现ftp协议.

Java -- ftp 上传工具类

ftp上传工具的简单测试版

sky_eyeland的博客 479

标准C实现FTP上传下载

标准C写成的实现FTP上传下载功能的源代码,浅显易懂,编程新手可以看看其层次划分和代码编写风格。

英特尔SVS:十亿级向量搜索的硬件优化与LVQ压缩实战

向量搜索作为处理高维嵌入数据的核心技术,其核心原理是通过近似最近邻(ANN)算法在海量数据中快速找到相似项,以解决传统暴力搜索在规模上的瓶颈。这项技术的核心价值在于为推荐系统、图像检索、自然语言处理等AI应用提供高效的相似性匹配能力,尤其在RAG架构中成为连接非结构化数据与大语言模型的关键基础设施。面对十亿级数据带来的内存与算力挑战,局部自适应向量量化(LVQ)等压缩技术通过减少存储开销并保持精度,而硬件层面的深度优化则利用AVX-512等指令集大幅提升计算效率。本文聚焦于英特尔开源的Scalable Ve

weixin_42526310的博客 553

java 完整ftp类_FTP之java工具类

依赖:2.代码如下: 其中PropertiesUtil类请参考另外一篇importorg.apache.commons.net.ftp.FTPClient;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOExce...

weixin_42515781的博客 310

单片机OTA升级:Bootloader如何多重校验保障APP完整性?

本文详细介绍了单片机OTA升级中Bootloader如何通过CRC校验、数字签名、版本比对和存储位置检查等多重校验机制保障APP完整性。CRC校验作为快速检测数据完整性的核心手段,结合其他安全措施有效防止设备变砖和安全漏洞,确保远程升级的可靠性。

l3m4n的博客 981

JAVA中使用FTPClient工具类上传下载

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件。本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。 1、写一个javabean文件,描述ftp上传或下载的信息 public class FtpUseBean { private String host; private Integ

ontheroad1875的专栏 594

基于OpenMV与双舵机云台的激光追踪系统实战解析

本文详细解析了基于OpenMV摄像头与双舵机云台的激光追踪系统设计与实现。从硬件选型、图像识别算法到PID控制逻辑,全面介绍了如何构建一个高效稳定的激光追踪系统,并分享了电子设计竞赛中的实战经验与调试技巧。该系统在智能玩具、安防监控及教学演示等领域具有广泛应用前景。

prometheus9mon的博客 261

微信开发 - 最新第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试

redirect_uri参数错误,微信第三方登录,没有服务器时的测试方法,微信开放平台的回调域名怎么设置为本地域名IP,微信登录微信支付每次调试都需要放到服务器上怎么办,微信登录支付业务在本地调试不了怎么办,在本地怎么测试微信支付和登录,微信第三方登陆本地测试,怎么在本地进行测试,微信回调域怎么设置为本地IP,微信扫码登录redirect_uri参数错误,微信开放平台,微信开放平台开发的第三方登录和支付,vue2,nuxt2,vue3,nuxt3,uniapp,微信开放平台,公众号,微信支付,微信登录授权,

🏆 前端领域优质创作者 8791

Java完成sftp上传

SFTP 是一种数据流链接,提供文件访问、传输和管理功能的网络传输协议。它允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。

Li_XJ99的博客 2058

基于matlab不变矩的数字验证码识别系统

随着互联网技术的快速发展和应用,网络给人们提供了丰富的资源和极大的便利,但随之而来的是互联网系统的安全性问题,而验证码正是加强 Web 系统安全性的产物。全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,CAPTCHA)也是验证码的一个应用程序,可以区分用户是人类还是计算机智能单击对象。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 917

java写ftp_Java中实现FTP上传下载文件的功能,完整代码

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上穿件文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码:packageftpDemo;importjava.io.DataOutputStream;importjava.io.InputStr...

weixin_39835158的博客 355

【WorkBuddy专栏25】如何选择大模型——积分消耗、用途场景、选型决策全指南

【WorkBuddy专栏25】如何选择大模型——积分消耗、用途场景、选型决策全指南

AI人人懂 940

MTK AWB 色温曲线的进一步猜想

平均距离来判断是否对该色温下白平衡进行全部收白处理,还是保留一些光源的本身的颜色。比如占据图像一大半左右的纯色背景,纵坐标值相对横坐标的距离应该会比较大,大于一般场景下的正常白点分布。反之,位于Plank_curve下方位置的点具有偏洋红色的倾向。此时拟合各个色温下的白点,拟合曲线大致是以X= 0.85)平行于横轴的一条直线。对原始坐标系中的点取对数后的Log坐标系空间。此时拟合各个色温下的白点,拟合曲线大致呈现的是一条直线。,可以认为是各种色温下白点分布所呈现的走向。的算法利用某个色温点的偏离。

大熊 722

java ftp库_Java中实现FTP上传下载文件的功能,完整代码

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上穿件文件夹、检 测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码:java">package ftpDemo;import java.io.DataOutputStream;import java.i...

weixin_42514288的博客 225

华为OD机试真题 新系统2026-04-15 C++ 实现【失灵的键盘】

有一个键盘有2个按键失灵了,按下这些键时会连续输出其他键对应的字符两次。具体如下: 1. 按下j键一次,屏幕上显示uu(两个连续的u);  按下b键一次,屏幕上显示t(两个连续的t) 2. u键和t键是好的,按下u键一次时,屏幕只会显示一次u(正常按键);按下t键一次时,屏幕只会显示一次t(正常按键) 3. 假定屏幕上连续显示两个t一定是按了一次b键,而不是两次t键;假定按键t之后不会紧接着按键b,即tttt转义为两个b,而不可能是tb

MISAYAONE的博客 211

java实现把文件上传至ftp服务器

用java实现ftp文件上传。我使用的是commons-net-1.4.1.zip。其中包含了众多的java网络编程的工具包。 1 把commons-net-1.4.1.jar包加载到项目工程中去。 2 看如下代码: import java.io.File; import java.io.FileInputStream; import java.io.IOException; import

海阔天空 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java实现ftp文件下载的源代码

这几天做的一个项目中用到了ftp文件传输,用java实现了ftp文件的下载。 一、win7下搭建ftp服务器 详见:http://jingyan.baidu.com/article/4b52d7026f50eefc5c774bcc.html 二、用java实现ftp文件下载 使用org.apache.commons.net jar包,下载地址:http://commons.apache.org/proper/commons-net/downloa

遨游网络huster的专栏 2362

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java ftp所需jar包,java利用commons net jar包实现文件ftp下传和上载功能

当前位置:我的异常网» 编程»java利用commons net jar包实现文件ftp下传和上载功java利用commons net jar包实现文件ftp下传和上载功能www.myexceptions.net网友分享于:2015-08-26浏览:11次java利用commons net jar包实现文件ftp上传和下载功能/*** @author wuling* @2008-12*...

weixin_39605455的博客 535

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java操作FTP,从FTP上读取指定文件,把指定文件上传到FTP

需要添加的依赖 <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> <groupId>commons-net</groupId> &lt...

船停在港湾是很安全的,但那不是造船的目的. 248

android端集成FTP文件下载功能

我使用的是ftp4j的SDK,非常轻巧易用,可以轻松的实现类似文件管理器的功能,但我的项目需求只要求下载,所以就只实现了下载功能。 官方地址:http://www.sauronsoftware.it/projects/ftp4j/manual.php 文档非常简明易懂: 直接贴上我的代码: public class FTPUtils { public interface Callback { void onSuccess(String filePath);

qugengting的博客 1842

java实现FTP

package ftpclient; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import java.beans.*; import java.io.*; import sun.net.TelnetInputStream; import

yue的专栏 1366
上一篇: oracle中transaction是不是只有commit之后才能完成,不commit事物就完成不了???
下一篇: 请教:linux下的/opt目录是做什么用的?
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值