推荐一个java操作ftp的工具类

目录

  • 写在前面

    • 1 导入jar包
    • 2 工具类中主要方法
      • 2.1 登陆ftp
      • 2.2 获取远程文件目录
      • 2.3 上传文件
      • 2.4 下载文件
    • 3 源码

@(终于等到你)

写在前面

作为经常使用电脑整理文件的童鞋,应该都使用过从ftp服务器上传下载文件,那么今天就了解下如何通过java程序操作ftp服务的文件

首先你要知道ftp的ip,路径,端口,有操作权限的账号和密码

1 导入jar包

 commons-net-3.6.jar

这个jar包用来设置编码,经过测试,不加也可用

2 工具类中主要方法

2.1 登陆ftp

    /**
     * 验证登录
     * @param ip
     * @param port
     * @param name
     * @param pwd
     * @return
     */
    public boolean login(String ip,int port, String name, String pwd) {
        try {
            ftp = new FTPClient();
            ftp.connect(ip, port);
            System.out.println(ftp.login(name, pwd));
            if(!ftp.login(name, pwd)){
                return false;
            }
            ftp.setCharset(Charset.forName("UTF-8"));
            ftp.setControlEncoding("UTF-8");

        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

注意:获取远程文件目录,上传和下载方法基于登陆方法

2.2 获取远程文件目录

    /**
     * 获取ftp某一文件(路径)下的文件名字,用于查看文件列表
     * @param ip
     * @param port
     * @param name
     * @param pwd
     * @param remotedir 远程地址目录
     * @return
     */
    public boolean getFilesName(String ip,int port, String name, String pwd, String remotedir) {
        try {
            if(!login(ip, port, name, pwd)){
                return false;
            }
            //获取ftp里面,指定文件夹 里面的文件名字,存入数组中
            FTPFile[] files = ftp.listFiles(remotedir);
            //打印出ftp里面,指定文件夹 里面的文件名字
            for (int i = 0; i < files.length; i++) {
                System.out.println(files[i].getName());
            }
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }finally{
            this.close();
        }
        return true;
    }

2.3 上传文件

    /**
     * 上传文件 方法一
     * @param ip
     * @param port
     * @param name
     * @param pwd
     * @param remotepath 远程地址文件路径
     * @param localpath 本地文件路径
     * @return
     */
    public boolean putFileOne(String ip,int port, String name, String pwd,String remotepath,String localpath) {
        try {
            if(!login(ip, port, name, pwd)){
                return false;
            }
            //将本地的 localpath 文件上传到ftp的根目录文件夹下面,并重命名为 remotepath中的名字
             return ftp.storeFile(remotepath, new FileInputStream(new File(localpath)));
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }finally{
            this.close();
        }
    }

    /**
     * 上传文件的第二种方法,优化了传输速度
     * @param ip
     * @param port
     * @param name
     * @param pwd
     * @param remotepath 远程地址文件路径
     * @param localpath 本地文件路径
     * @return
     */
    public boolean putFileTwo(String ip,int port, String name, String pwd,String remotepath,String localpath) {
        try {
            if(!login(ip, port, name, pwd)){
                return false;
            }
            os = ftp.storeFileStream(remotepath);
            fis = new FileInputStream(new File(localpath));
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = fis.read(b)) != -1) {
                os.write(b,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }finally {
            this.close();
        }
        return true;
    }

2.4 下载文件

    /**
     * 下载文件 方法一
     * @param ip
     * @param port
     * @param name
     * @param pwd
     * @param remotepath 远程地址文件路径
     * @param localpath 本地文件路径
     * @return
     */
    public boolean getFileOne(String ip,int port, String name, String pwd,String remotepath,String localpath) {
        try {
            if(!login(ip, port, name, pwd)){
                return false;
            }
            //将ftp资源中 remotepath 文件下载到本地目录文件夹下面,并重命名为 localpath 中的名字
            return ftp.retrieveFile(remotepath, new FileOutputStream(new File(localpath)));
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }finally{
            this.close();
        }
    }

    /**
     * 下载文件的第二种方法,优化了传输速度
     * @param ip
     * @param port
     * @param name
     * @param pwd
     * @param remotepath 远程地址文件路径
     * @param localpath  本地文件路径
     * @return
     */
    public boolean getFileTwo(String ip,int port, String name, String pwd,String remotepath,String localpath) {
        try {
            if(!login(ip, port, name, pwd)){
                return false;
            }
            is = ftp.retrieveFileStream(remotepath);
            fos = new FileOutputStream(new File(localpath));
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = is.read(b)) != -1) {
                fos.write(b,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }finally {
            this.close();
        }
        return true;
    }

3 源码

当然上面代码只是重要的部分,如果有问题可去github自行下载 charmsongo

如果有什么更好的方法欢迎留言

原文地址:https://www.cnblogs.com/charmsongo/p/10086960.html

时间: 2024-11-05 13:22:02

推荐一个java操作ftp的工具类的相关文章

java操作ORACLE数据库工具类(JDBC)

package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * * 2015-3-5下午2:45:56 * *MusicWeb.util.DBUtil *连接数据库 类 */ public class DBUtil

自动扫描FTP文件工具类 ScanFtp.java

package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 自动扫描FTP文件工具类 * 需要定时执行 */ public class S

java中常用的工具类(二)

下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

java中常用的工具类

一.String工具类 package com.itjh.javaUtil; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * @author 宋立君 * @date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NOT_FOUND = -1; private static final St

weixin4j开发—为大家提供一个获取Weixin对象的工具类

如果大家下载了weixin4j的话,那么这个工具类对大家使用weixin4j将是一个非常好用的工具类. 首先我创建了一个数据表,来存放access_token CREATE TABLE `t_token` ( `id` int(11) NOT NULL AUTO_INCREMENT, `access_token` varchar(120) NOT NULL, `expires_in` int(11) NOT NULL, `createTime` datetime NOT NULL, PRIMAR

Android学习笔记之数据的Sdcard存储方法及操作sdcard的工具类

FileService.java也就是操作sdcard的工具类: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75

黑马程序员---java基础---集合框架工具类:Collections和Arrays

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------        Collections 一.概述 Collections是对集合框架的一个工具类.它里边的方法都是静态的,不需要创建对象.并未封装特有数据. 在Collections工具类中大部分方法是用于对List集合进行操作的,如比较,二

java中常用的工具类(三)

继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

java中常用的工具类(一)

我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工具类 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 5