JAVA ftp操作

整理笔记——二极管 二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件,二极管的核心是PN结。加在二极管两端的电压和通关的电流被成为,二极管的伏安特性曲线​​​二极管的正向特性:起初正向电压较小时,正向电流几乎没有,称之为死区,此时二极管处于截止状态。当电压差超过截止电压(0.5V或者0.7V),电流随着电压上升,开始增加缓慢,随后急剧增大,二极管的电阻变小进入导通状态,此时电压变化较小。二极管的反向特性:起初反向电流很小,不随电压二变化,此时成为反向饱和电流;当方向电压达到二极管的反向击穿电压。 阅读详情

/**
 * Ftp.java
 * Created by victer
 */
package com.core.common;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPHTTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <p>
 * ClassName: Ftp
 * </p>
 * <p>
 * Description: ftp工具
 * </p>
 * <p>
 * Author: victer
 * </p>
 */
public class Ftp {

    /**
     * <p>
     * Field log: 日志
     * </p>
     */
    public Logger log = LoggerFactory.getLogger(this.getClass());

    /**
     * <p>
     * Field ftpClient: ftp客户端
     * </p>
     */
    private FTPClient ftpClient = null;

    /**
     * <p>
     * Field charSet: 字符集编码
     * </p>
     */
    private String charSet = "UTF-8";

    /**
     * <p>
     * Field remoteCharSet: 远端文件编码
     * </p>
     */
    private String remoteCharSet = "iso-8859-1";

    /**
     * <p>
     * Field byteSize: 字节数组长度
     * </p>
     */
    private final int byteSize = 1024;

    /**
     * <p>
     * Field size100: 100长度
     * </p>
     */
    private final int sizeL100 = 100;

    /**
     * <p>
     * Field size10: 10长度
     * </p>
     */
    private final int sizeL10 = 10;

    /**
     * <p>
     * Field separated: /分隔符
     * </p>
     */
    private final String separated = "/";

    /**
     * <p>
     * Description: 构造函数
     * </p>
     * 
     * @param charSet 字符编码
     */
    public Ftp(String charSet) {
        //实例化FTP客户端
        this.ftpClient = new FTPClient();
        //设置将过程中使用到的命令输出到控制台     
        //this.ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
        //设置编码
        this.charSet = charSet;
    }

    /**
     * <p>
     * Description: 构造函数(代理的方式,当代理参数不存在的时候,实例化的为普通对象)
     * </p>
     * 
     * @param charSet 字符编码
     * @param proxyHost 代理地址
     * @param porxyPort 代理端口
     */
    public Ftp(String charSet, String proxyHost, String porxyPort) {

        //判断是否有代理数据 实例化FTP客户端
        if (!StringUtils.isEmpty(proxyHost) && !StringUtils.isEmpty(porxyPort)) {

            //实例化FTP客户端
            this.ftpClient = new FTPHTTPClient(proxyHost, new Integer(porxyPort));

        } else {

            //实例化FTP客户端
            this.ftpClient = new FTPClient();

        }

        //设置将过程中使用到的命令输出到控制台     
        //this.ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));

        //设置编码
        this.charSet = charSet;
    }

    /**
     * <p>
     * Description: 连接到FTP服务器
     * </p>
     * 
     * @param hostname 主机名
     * @param port 端口
     * @param username 用户名
     * @param password 密码
     * @return 是否连接成功
     * @throws Exception 异常
     */
    public boolean connect(String hostname, int port, String username, String password) throws Exception {
        this.ftpClient.connect(hostname, port);
        this.ftpClient.setControlEncoding(this.charSet);
        if (FTPReply.isPositiveCompletion(this.ftpClient.getReplyCode())) {
            if (this.ftpClient.login(username, password)) {
                return true;
            }
        }
        disconnect();
        return false;
    }

    /**
     * <p>
     * Description: 断开与远程服务器的连接
     * </p>
     * 
     * @throws IOException 异常
     */
    public void disconnect() throws IOException {
        if (this.ftpClient.isConnected()) {
            this.ftpClient.disconnect();
        }
    }

    /**
     * <p>
     * Description: 上传文件到FTP服务器,支持断点续传
     * </p>
     * 
     * @param local 本地文件名称,绝对路径
     * @param remote 远程文件路径,使用/home/directory1/subdirectory/file.ext或是
     *            http://www.guihua.org/subdirectory/file.ext
     *            按照Linux上的路径指定方式,支持多级目录嵌套,支持递归创建不存在的目录结构
     * @return 上传结果<br />
     *         1:上传文件成功<br />
     *         2:上传新文件成功<br />
     *         0:创建服务器远程目录结构失败<br />
     *         -1:上传文件失败<br />
     *         -2:上传新文件失败 <br />
     *         -3:删除远端文件失败<br />
     * @throws Exception 异常
     */
    public String upload(String local, String remote) throws Exception {
        //设置PassiveMode传输     
        this.ftpClient.enterLocalPassiveMode();
        //设置以二进制流的方式传输     
        this.ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        this.ftpClient.setControlEncoding(this.charSet);
        //返回状态
        String result = null;
        //对远程目录的处理     
        String remoteFileName = remote;
        if (remote.contains(this.separated)) {
            remoteFileName = remote.substring(remote.lastIndexOf(this.separated) + 1);
            //创建服务器远程目录结构,创建失败直接返回     
            if ("0".equals(this.createDirecroty(remote, this.ftpClient))) {
                this.log.info("创建服务器远程目录结构失败");
                return "0";
            }
        }
        //检查远程是否存在文件     
        FTPFile[] files = null;
        files = this.ftpClient.listFiles(new String(remoteFileName.getBytes(this.charSet), this.remoteCharSet));
        if (files.length == 1) {
            long remoteSize = 0;
            remoteSize = files[0].getSize();
            File f = null;
            f = new File(local);
            long localSize = 0;
            localSize = f.length();
            if (remoteSize >= localSize) {
                this.log.info("远端文件大于等于本地文件大小,无需上传,终止上传");
                result = "1";
            } else {
                //尝试移动文件内读取指针,实现断点续传     
                result = uploadFile(remoteFileName, f, this.ftpClient, remoteSize);

                //如果断点续传没有成功,则删除服务器上文件,重新上传     
                if ("-1".equals(result)) {
                    if (!this.ftpClient.deleteFile(remoteFileName)) {
                        this.log.info("删除远端文件失败");
                        return "-3";
                    }
                    result = uploadFile(remoteFileName, f, this.ftpClient, 0);
                }
            }
        } else {
            result = uploadFile(remoteFileName, new File(local), this.ftpClient, 0);
        }
        return result;
    }

    /**
     * <p>
     * Description: 从FTP服务器上下载文件,支持断点续传,下载百分比汇报
     * </p>
     * 
     * @param remote 远程文件路径
     * @param local 本地文件路径
     * @return 下载状态 <br />
     *         1:下载成功<br />
     *         0:下载失败<br />
     *         -1:远程文件不存在<br />
     * @throws Exception 异常
     */
    public String download(String remote, String local) throws Exception {

        //设置被动模式     
        this.ftpClient.enterLocalPassiveMode();

        //设置以二进制方式传输     
        this.ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

        //返回状态
        String result = null;

        //检查远程文件是否存在     
        FTPFile[] files = null;
        files = this.ftpClient.listFiles(new String(remote.getBytes(this.charSet), this.remoteCharSet));
        if (files.length != 1) {
            this.log.info("远程文件不存在");
            result = "-1";
        } else {

            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;

            //获得远程文件的大小
            long lRemoteSize = 0;
            lRemoteSize = files[0].getSize();

            //获得本地文件对象(不存在,则创建)
            File f = null;
            f = new File(local);

            //本地存在文件,进行断点下载     
            if (f.exists()) {

                //获得本地文件的长度
                long localSize = 0;
                localSize = f.length();

                //判断本地文件大小是否大于远程文件大小     
                if (localSize >= lRemoteSize) {
                    this.log.info("本地文件大于等于远程文件,无需下载,下载中止");
                    result = "1";
                } else {

                    try {

                        //设置开始点
                        this.ftpClient.setRestartOffset(localSize);

                        //获得流(进行断点续传,并记录状态)
                        bos = new BufferedOutputStream(new FileOutputStream(f, true));
                        bis = new BufferedInputStream(this.ftpClient.retrieveFileStream(new String(remote
                                .getBytes(this.charSet), this.remoteCharSet)));

                        //字节流
                        byte[] bytes = null;
                        bytes = new byte[this.byteSize];

                        //远程文件长度
                        long step = 0;
                        step = lRemoteSize / this.sizeL100;

                        //进度
                        long process = 0;
                        process = localSize / step;

                        //开始下载
                        int c;
                        while ((c = bis.read(bytes)) != -1) {
                            bos.write(bytes, 0, c);
                            localSize += c;
                            long nowProcess = 0;
                            nowProcess = localSize / step;
                            if (nowProcess > process) {
                                process = nowProcess;
                                if (process % this.sizeL10 == 0) {
                                    this.log.info("下载进度:" + process);
                                }
                            }
                        }

                    } catch (Throwable e) {
                        throw new Exception(e);
                    } finally {
                        if (null != bis) {
                            bis.close();
                        }
                        if (null != bos) {
                            try {
                                bos.flush();
                            } catch (Throwable e) {
                                this.log.info("flush 失败");
                            }
                            bos.close();
                        }
                    }

                    //获得下载状态
                    boolean isDo = false;
                    if (this.ftpClient.sendNoOp()) {
                        isDo = this.ftpClient.completePendingCommand();
                    }
                    if (isDo) {
                        result = "1";
                    } else {
                        result = "0";
                    }
                }
            } else {

                try {

                    //获得流
                    bos = new BufferedOutputStream(new FileOutputStream(f));
                    bis = new BufferedInputStream(this.ftpClient.retrieveFileStream(new String(remote
                            .getBytes(this.charSet), this.remoteCharSet)));

                    //远程文件长度
                    long step = 0;
                    step = lRemoteSize / this.sizeL100;

                    //进度
                    long process = 0;
                    long localSize = 0L;

                    //开始下载
                    int c;
                    byte[] bytes = null;
                    bytes = new byte[this.byteSize];
                    while ((c = bis.read(bytes)) != -1) {
                        bos.write(bytes, 0, c);
                        localSize += c;
                        long nowProcess = 0;
                        nowProcess = localSize / step;
                        if (nowProcess > process) {
                            process = nowProcess;
                            if (process % this.sizeL10 == 0) {
                                this.log.info("下载进度:" + process);
                            }
                        }
                    }

                } catch (Throwable e) {
                    throw new Exception(e);
                } finally {
                    if (null != bis) {
                        bis.close();
                    }
                    if (null != bos) {
                        try {
                            bos.flush();
                        } catch (Throwable e) {
                            this.log.info("flush 失败");
                        }
                        bos.close();
                    }
                }

                //获得下载状态
                boolean isDo = false;
                if (this.ftpClient.sendNoOp()) {
                    isDo = this.ftpClient.completePendingCommand();
                }
                if (isDo) {
                    result = "1";
                } else {
                    result = "0";
                }
            }
        }
        return result;
    }

    /**
     * <p>
     * Description: 返回远程文件列表
     * </p>
     * 
     * @param remotePath 路径
     * @return 远程文件列表
     * @throws Exception 异常
     */
    public FTPFile[] getremoteFiles(String remotePath) throws Exception {

        //设置被动模式     
        this.ftpClient.enterLocalPassiveMode();

        //设置以二进制方式传输     
        this.ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

        return this.ftpClient.listFiles(remotePath);
    }

    /**
     * <p>
     * Description: 删除ftp上的文件
     * </p>
     * 
     * @param remotePath 路径
     * @return 操作结果
     * @throws IOException 异常
     */
    public boolean removeFile(String remotePath) throws IOException {
        boolean flag = false;
        if (this.ftpClient != null) {

            //设置被动模式     
            this.ftpClient.enterLocalPassiveMode();

            //设置以二进制方式传输     
            this.ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

            flag = this.ftpClient.deleteFile(new String(remotePath.getBytes(this.charSet), this.remoteCharSet));
        }
        return flag;
    }

    /**
     * <p>
     * Description: 上传文件到服务器,新上传和断点续传
     * </p>
     * 
     * @param remoteFile 远程文件名,在上传之前已经将服务器工作目录做了改变
     * @param localFile 本地文件File句柄,绝对路径
     * @param fc FTPClient引用
     * @param remoteSize 需要显示的处理进度步进值
     * @return 上传结果<br />
     *         1:上传文件成功<br />
     *         -1:上传文件失败<br />
     *         2:上传新文件成功<br />
     *         -2:上传新文件失败
     * @throws Exception 异常
     */
    private String uploadFile(String remoteFile, File localFile, FTPClient fc, long remoteSize) throws Exception {

        //显示进度的上传     
        long step = 0;
        step = localFile.length() / this.sizeL100;
        long process = 0;
        long localreadbytes = 0L;
        RandomAccessFile raf = null;
        raf = new RandomAccessFile(localFile, "r");
        BufferedOutputStream bos = null;
        bos = new BufferedOutputStream(fc.appendFileStream(new String(remoteFile.getBytes(this.charSet),
                this.remoteCharSet)), Constants.IO_BUFFERED);

        //断点续传     
        if (remoteSize > 0) {
            fc.setRestartOffset(remoteSize);
            process = remoteSize / step;
            raf.seek(remoteSize);
            localreadbytes = remoteSize;
        }

        try {

            //开始上传
            byte[] bytes = null;
            bytes = new byte[this.byteSize];
            int c;
            while (-1 != (c = raf.read(bytes))) {
                bos.write(bytes, 0, c);
                localreadbytes += c;
                if (localreadbytes / step != process) {
                    process = localreadbytes / step;
                    this.log.info("上传进度:" + process);
                }
            }

        } catch (Throwable e) {
            throw new Exception(e);
        } finally {
            try {
                bos.flush();
            } catch (Throwable e) {
                this.log.info("flush 失败");
            }
            bos.close();
            raf.close();
        }

        //判断上传结果
        boolean result = false;
        String status = null;
        if (this.ftpClient.sendNoOp()) {
            result = this.ftpClient.completePendingCommand();
        }
        if (remoteSize > 0) {
            status = result ? "1" : "-1";
        } else {
            status = result ? "2" : "-2";
        }
        return status;
    }

    /**
     * <p>
     * Description: 递归创建远程服务器目录
     * </p>
     * 
     * @param remote 远程服务器文件绝对路径
     * @param fc FTPClient对象
     * @return 目录创建是否成功<br />
     *         1:成功<br />
     *         0:失败
     * @throws Exception 异常
     */
    private String createDirecroty(String remote, FTPClient fc) throws Exception {
        String status = null;
        status = "1";
        String directory = null;
        directory = remote.substring(0, remote.lastIndexOf(this.separated) + 1);
        if (!this.separated.equalsIgnoreCase(directory)
                && !fc.changeWorkingDirectory(new String(directory.getBytes(this.charSet), this.remoteCharSet))) {
            //如果远程目录不存在,则递归创建远程服务器目录     
            int start = 0;
            int end = 0;
            if (directory.startsWith(this.separated)) {
                start = 1;
            } else {
                start = 0;
            }
            end = directory.indexOf(this.separated, start);
            while (true) {
                String subDirectory = null;
                subDirectory = new String(remote.substring(start, end).getBytes(this.charSet), this.remoteCharSet);
                if (!fc.changeWorkingDirectory(subDirectory)) {
                    if (fc.makeDirectory(subDirectory)) {
                        fc.changeWorkingDirectory(subDirectory);
                    } else {
                        this.log.info("创建目录失败");
                        return "0";
                    }
                }

                start = end + 1;
                end = directory.indexOf(this.separated, start);

                //检查所有目录是否创建完毕     
                if (end <= start) {
                    break;
                }
            }
        }
        return status;
    }
}
 

元数据及数据仓库相关概念 文章目录元数据(metadata)的概念Data about Data定义技术元数据业务元数据总结数据仓库ODS简单的理解为 Operational Data Store, 运营数据仓储 数据整合层(也叫做数据缓冲层)EDW简单理解为 Enterprise Data Warehouse, 企业数据仓库ODS与EDW之间的差异使用角色数据来源数据获取性能和及时性数据架构数据共享能力数据系统提供应用数... 阅读详情

相关推荐

Allegro PCB设计小技巧:如何用Shift键快速平移复制走线和过孔?

本文深入解析了Allegro PCB设计中利用Shift键进行平移复制的核心技巧。通过对比传统复制粘贴流程,详细演示了如何高效、精准地批量复制走线和过孔,尤其适用于创建等间距电源总线、过孔阵列等场景,能显著提升PCB设计效率与准确性。

pz89012345的博客 554

ftp文件上传

package com.iflytek.util;   import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.Pri...

qq_34373524的博客 177

基于ASP.NET+SQLServer的美妆网站的设计与实现

通过本次ASP.NET MVC美妆商城项目的开发,我们实现了一个功能完善、性能稳定的在线购物平台。该项目不仅提升了用户的购物体验,也为商家提供了一个高效的商品管理和销售渠道。未来,我们将持续优化系统功能,提升用户体验,以适应不断变化的市场需求。

毕业设计大牛哥 1499

ftp上传

1.上传工具类package com.kingdee.youshang.platform.app.common.util; import com.kingdee.youshang.platform.app.manage.action.UploadFormBean; import java.io.*; import java.util.*; import org.apache.commons.ne

chineselly的专栏 1627

Linux USB Gadget框架解析:从设备模拟到驱动开发实战

USB(通用串行总线)是现代计算机系统中应用最广泛的外设连接标准,其主从动态切换的特性使其在嵌入式系统中扮演着双重角色。与I2C、SPI等固定主从架构不同,USB设备需要同时支持主机(Host)和从机(Device)两种模式,这催生了Linux内核中独特的USB Gadget框架。该框架通过分层设计,将硬件控制器驱动(UDC)、功能逻辑(Function)和配置管理(Configfs)解耦,实现了灵活的设备模拟能力。在工程实践中,开发者可以利用Gadget框架快速实现U盘、网络适配器、串口转换器等常见USB

weixin_28007513的博客 561

Flannel,Calico 和 Cilium 之间有哪些优缺点和差别?

例如,在一个多租户的容器集群中,可以通过Calico为不同租户的容器设置精细的访问控制策略,确保每个租户的资源安全。例如,在设置复杂的网络策略和BGP路由时,需要对网络概念和Calico的配置语法有比较深入的了解。它可以根据容器的标签、服务等信息来定义访问规则,并且可以实现更加细粒度的网络安全策略,如HTTP层的策略。性能损耗:在overlay网络模式下(如VXLAN),由于需要对数据包进行额外的封装和解封装操作,会带来一定的性能损耗,尤其是在高流量的场景下,这种性能损耗可能会更加明显。

chinansa的博客 1529

FtpClient工具类

1、maven依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons.l...

AaronSimon的博客 2万+

Win11网络卡顿?用Wireshark抓包5分钟定位问题(保姆级实战)

本文详细介绍了如何使用Wireshark在Win11系统中快速定位网络卡顿问题。通过5分钟抓包分析,作者成功发现TCP重传率高达37%的罪魁祸首,并提供了从准备工作到实战分析的保姆级教程,帮助用户解决游戏卡顿、视频会议延迟等常见网络问题。

weixin_28839629的博客 306

基于FTP协议的文件上传与下载

基于FTP协议的文件上传与下载

qq_59616295的博客 1472

【报错解决】OpenClaw 报错 `openclaw: command not found`:全局命令未加入系统 PATH 的深度排查与修复指南

在国产AI工具链开发中,OpenClaw作为关键命令行工具常出现command not found报错。本文深度分析该问题的根源——Linux环境变量PATH未包含用户级安装目录(~/.local/bin)。通过四种解决方案(临时PATH修改、永久配置、软链接、虚拟环境处理)和排错Checklist,揭示"命令存在却找不到"的本质是路径配置问题,特别适用于Docker/国产Linux/非root环境。文中强调理解Linux工具链机制对国产AI开发的重要性,并指出这是开发者掌握环境

博客 5382

把注释掉的代码删除掉:在 SAP ABAP 团队里打造可回溯、可测试、可演进的代码库

摘要 SAP ABAP项目中常见的"注释掉代码"反模式存在严重隐患:它增加代码噪音,制造虚假安全感,并可能引发安全和合规风险。Clean ABAP指南明确建议删除这类代码,理由包括: 版本控制系统已提供完整历史回溯能力 注释代码会误导开发者,增加理解成本 临时禁用需求应通过Feature Toggle实现 必须保留的参考代码应放入$TMP等隔离区域 团队应建立自动化检查机制,将"删除注释代码"纳入工程规范,确保代码库只表达当前有效的行为逻辑。在AI时代,可以利用工具辅

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2450

java ftp 复制文件命令_Java实现FTP文件与文件夹的上传和下载

1 packageftp;23 importjava.io.BufferedInputStream;4 importjava.io.BufferedOutputStream;5 importjava.io.File;6 importjava.io.FileInputStream;7 importjava.io.FileNotFoundException;8 importjava.io.FileOu...

weixin_35796591的博客 547

JAVA:Spring Boot 集成 LibreOffice 实现文档在线转换服务

本文介绍了在企业级应用开发中使用LibreOffice实现文档格式转换的技术方案。通过对比分析商业库、纯Java方案和云服务API的优缺点,重点阐述了LibreOffice在格式兼容性、转换质量和零成本方面的优势。文章详细说明了环境准备步骤,包括Windows/Linux系统安装LibreOffice、解决中文乱码问题以及Docker部署方案。最后提供了Spring Boot项目的基本配置,包括Maven依赖和application.yml配置文件,为构建稳定高效的文档转换服务奠定基础。

木头 519

java操作FTP

类提供了许多其他方法来处理各种FTP操作。此外,实际返回值可能会根据FTP服务器的响应而有所不同。,先确认你是FTP文件服务器还是FTPS。这句代码报错,确认你的文件服务器类型,是。,否则connect就会报这个错误。java链接FTP文件使用的是。指定本地路径的时候要用前缀。

while(life)++; 1018

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JAVA操作FTP

用java语言,对FTP服务器进行操作

hoohyouxi的博客 246

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java中的FTP操作

通过以上示例,我们可以看到,在Java中进行FTP操作并不是一件复杂的事情。掌握这些技能后,无论是处理日常文件传输需求,还是构建复杂的企业级应用,都能更加得心应手。希望这篇文章能对你有所帮助。如果你有任何问题或建议,欢迎在评论区留言。我们下次再见!当我们专注于编程细节时,不要忘记代码背后的逻辑和目的。只有把技术和业务需求结合起来,才能真正发挥代码的力量。

weixin_46372265的博客 571

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JAVA操作FTP(FTP工具类)

JAVA FTP操作 导入commons-net <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version> </dependency> package com.my.ftp.test; import java.io.File; imp

wangyingjief的博客 7429

java ftp 教程_Java 中两种ftp操作方式

最近看到几篇关于java中操作ftp的文章,所以想写一个总结贴,标记一下,方便以后应用。首先,我们可以应用java中的ftp库,java中提供了一个ftpclient的类,提供了很多操作ftp的方法。先上代码,一看便知,很简单,应用时只要传递相应的server,user,password等就行了。import java.io.IOException;import sun.net.*;import ...

weixin_39636245的博客 1364

java 中的 Ftp操作

老婆昨天突然跟我说起用Java做Ftp的操作,懊恼的是,我竟然没有看过,丢人丢人。。。现特意写下文字,督促自己学习:)    对于任何Ftp服务器,都是需要遵循Ftp协议的,所以任何的ftp相关操作都是可以通过ftp协议的相关命令来完成的,对于现在的任何Ftp客户端,实际上都只是在Ftp协议的基础上做了一层外壳,只是外壳做的好坏,功能是否顺手,界面是否美观的问题。对于Java,处理Ftp相关操作可

Bluesky_Leon的专栏 2560

FTP 的Java客户端操作

注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢! 温馨提示:(暂不支持在本地的C盘中写入文件) 一、引入依赖 <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> <groupId>commons-net</groupId> <artifactId&g

Mr.J 1801

java 使用ftp_Java对FTP的操作

Java操作FTP的功能避免了FTP文件夹不存在的情况,使用了单例避免了多线程导致超过FTP最大连接数的问题FTP工具类需要commons-netpackage util;import java.io.*;import java.util.LinkedList;import java.util.List;import org.apache.commons.net.ftp.FTPClient;imp...

weixin_39613089的博客 601

java ftp协议操作文件

java ftp协议操作文件 package com.cmxcode.servicesgateway.util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FT

qq_33619502的博客 203

手写一个好用的Java FTP操作工具类

前言 网上百度了很多FTP的java 工具类,发现文章代码都比较久远,且代码臃肿,即使搜到了代码写的还可以的,封装的常用操作方法不全面,于是自己花了半天实现一个好用的工具类。最初想用java自带的FTPClient 的jar 去封装,后来和apache的jar工具包对比后,发现易用性远不如apache,于是决定采用apache的ftp的jar 封装ftp操作类。 之前写过一篇 windows 服务器搭建FTP服务的教程 点击查看 代码展示 pom文件引入依赖关系 commons-net...

洛阳泰山的博客 2487

java操作ftp

JAVA FTPClient FTP简单操作 - 简书

Li_Zhongxin的博客 227

FTP的Java操作全面实战

 FTP系列: 在Windows系统上搭建FTP服务器全面总结:https://blog.csdn.net/haoranhaoshi/article/details/86092630 FTP操作:https://blog.csdn.net/haoranhaoshi/article/details/86922363 FTP的Java操作全面实战:https://blog.csdn.net/haora...

haoranhaoshi的博客 1003

java操作ftp上传下载

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层,TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。FTP也是一个应用程序,基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。可以使用FTP进行下载和上传。

客官不爱喝酒的博客 1215
上一篇: JAVA解析XML文件
下一篇: JAVA判断是否移动端请求
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值