`

FtpUtil工具类

    博客分类:
  • java
 
阅读更多

package com.wangxuegang.utils;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

 

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.FTPReply;

 

/**

 * ftp上传下载工具类

 */

public class FtpUtil {

 

/** 

* Description: 向FTP服务器上传文件 

* @param host FTP服务器hostname 

* @param port FTP服务器端口 

* @param username FTP登录账号 

* @param password FTP登录密码 

* @param basePath FTP服务器基础目录

* @param filePath FTP服务器文件存放路径。例如分日期存放:/2018/11/19。文件的路径为basePath+filePath

* @param filename 上传到FTP服务器上的文件名 

* @param input 输入流 

* @return 成功返回true,否则返回false 

*/  

public static boolean uploadFile(String host, int port, String username, String password, String basePath,

String filePath, String filename, InputStream input) {

boolean result = false;

FTPClient ftp = new FTPClient();

try {

int reply;

ftp.connect(host, port);// 连接FTP服务器

// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器

ftp.login(username, password);// 登录

reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return result;

}

//切换到上传目录

if (!ftp.changeWorkingDirectory(basePath+filePath)) {

//如果目录不存在创建目录

String[] dirs = filePath.split("/");

String tempPath = basePath;

for (String dir : dirs) {

if (null == dir || "".equals(dir)) continue;

tempPath += "/" + dir;

if (!ftp.changeWorkingDirectory(tempPath)) {

if (!ftp.makeDirectory(tempPath)) {

return result;

} else {

ftp.changeWorkingDirectory(tempPath);

}

}

}

}

//设置上传文件的类型为二进制类型

ftp.setFileType(FTP.BINARY_FILE_TYPE);

//上传文件

if (!ftp.storeFile(filename, input)) {

return result;

}

input.close();

ftp.logout();

result = true;

} catch (IOException e) {

e.printStackTrace();

} finally {

if (ftp.isConnected()) {

try {

ftp.disconnect();

} catch (IOException ioe) {

}

}

}

return result;

}

 

/** 

* Description: 从FTP服务器下载文件 

* @param host FTP服务器hostname 

* @param port FTP服务器端口 

* @param username FTP登录账号 

* @param password FTP登录密码 

* @param remotePath FTP服务器上的相对路径 

* @param fileName 要下载的文件名 

* @param localPath 下载后保存到本地的路径 

* @return 成功返回true,否则返回false

*/  

public static boolean downloadFile(String host, int port, String username, String password, String remotePath,

String fileName, String localPath) {

boolean result = false;

FTPClient ftp = new FTPClient();

try {

int reply;

ftp.connect(host, port);

// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器

ftp.login(username, password);// 登录

reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return result;

}

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();

result = true;

} catch (IOException e) {

e.printStackTrace();

} finally {

if (ftp.isConnected()) {

try {

ftp.disconnect();

} catch (IOException ioe) {

}

}

}

return result;

}

 

/**

* 测试Main

*/

public static void main(String[] args) {

try {

 

 

/** 

// * 依赖commons-net-3.5.jar

* Description: 向FTP服务器上传文件 

* @param host FTP服务器hostname 

* @param port FTP服务器端口 

* @param username FTP登录账号 

* @param password FTP登录密码 

* @param basePath FTP服务器基础目录

* @param filePath FTP服务器文件存放路径。例如分日期存放:/2018/11/19。文件的路径为basePath+filePath

* @param filename 上传到FTP服务器上的文件名 

* @param input 输入流 

* @return 成功返回true,否则返回false 

*/  

       FileInputStream in=new FileInputStream(new File("D:\\123.jpg"));  

       boolean flag = uploadFile("127.0.0.1", 22, "username", "password", "/data","/2018/11/19", "123.jpg", in);  

       System.out.println(flag);  

   } catch (FileNotFoundException e) {  

       e.printStackTrace();  

   }  

}

}

 

分享到:
评论

相关推荐

    基于springboot的FtpUtil工具类.zip

    《基于SpringBoot的FTPUtil工具类详解》 在IT领域,SpringBoot框架因其简洁的配置、快速的开发特性,已经成为Java开发的首选。而在实际项目中,文件上传和下载是常见的功能之一,FTP(File Transfer Protocol)作为...

    FtpUtil工具类源码

    FtpUtil工具类源码

    FtpUtil.java(ftp工具类)

    ftp工具类,构造方法初始化类,连接ftp,列出所有文件内容,下载文件

    springboot-FtpUtil-master_springbootftputil_ftp_attentioniwd_DEM

    2. **FTP工具类**:`FtpUtil`是核心工具类,它包含了一系列静态方法,如`connect()`用于建立连接,`uploadFile()`和`downloadFile()`分别用于文件上传和下载,以及`disconnect()`用于关闭连接。这些方法内部会使用`...

    java版ftp上传下载工具类

    `FtpUtil.java` 文件是这个工具类的核心,它通常会包含以下关键组件: 1. **连接设置**:工具类需要设置FTP服务器的主机地址、端口号、用户名和密码,以及可能的连接模式(主动或被动)。 2. **连接和断开**:`...

    我积攒的java工具类 基本满足开发需要的工具类

    D:\002 我的工具类\016 FtpUtil\FtpUtil.java D:\002 我的工具类\016 FtpUtil\FtpUtils.java D:\002 我的工具类\017在页面上显示各种文档中的内容。在servlet中的逻辑 D:\002 我的工具类\017在页面上显示各种文档中...

    ftpUtil.zip,FTP相关工具类

    https://blog.csdn.net/weixin_45044097/article/details/109637761,这是原文。上传的资源是ftp上传的两个工具类,接近1500行代码,实现ftp连接,文件获取,上传,下载

    java中很实用的一些工具类

    这里提到的几个工具类都是Java开发中非常实用的,它们分别是CookieUtils、EasyUIResult、IDUtils、JsonUtils以及FtpUtil。下面将对这些工具类的功能进行详细介绍。 1. **CookieUtils**: 这个工具类主要用于处理HTTP...

    FtpUtil.java

    《FTPUtil.java——Java实现FTP文件传输工具类详解》 在Java编程中,FTPUtil.java是一个常见的工具类,用于处理FTP(File Transfer Protocol)文件传输协议相关的操作。它提供了便捷的方法来连接FTP服务器,上传、...

    工具类的jar包集合

    5. `FtpUtil.java`:FTP(文件传输协议)工具类,提供了连接FTP服务器、上传/下载文件、管理目录等FTP相关操作的API。 6. `TaotaoResult.java`:这个名字可能是参照淘宝的API设计,用于封装接口返回的结果,通常...

    apache FTP 工具类

    接下来,我们将深入探讨FTP工具类的主要功能、使用方法以及源码分析。 **1. FTPClient类** FTPClient是Apache Commons Net的核心类,它实现了FTP协议的大部分功能。通过这个类,我们可以连接到FTP服务器,执行登录...

    ftputil.rar

    这个工具可能包含了一个名为`ftputil`的Java类,该类提供了连接FTP服务器、登录、切换目录、列出文件、下载文件等功能。开发者可以通过调用这个类的方法来实现FTP操作。例如,可能有一个`listJavaFiles(String ...

    ftp上传下载文件工具类

    项目中添加该工具类,用一下语句调用 FTPUtil ftpUtil = new FTPUtil("172.16.1.41",21,"admin","123456"); ftpUtil.downLoadFile("20190913.txt","D:\\ftplocal\\20190913.txt"); ftpUtil.uploadFile&#...

    FTPUtil_ftp_

    FTPUtil_ftp_ 是一个基于Java编程语言实现的FTP客户端工具类,主要用于处理FTP(File Transfer Protocol)相关的操作,如上传文件、下载文件以及批量上传和下载。在IT行业中,FTP是一个广泛使用的协议,用于在计算机...

    Java常用工具类.zip

    资源包括Java开发中经常使用到的一些工具类,源代码,亲测可直接使用。 工具类包括:CookieUtils;ExceptionUtil;FtpUtil;HttpClientUtil;IDUtils;JsonUtils;PictureResult;EasyUIResult

    javaweb开发常用工具类

    1.jedis 2.cookieUtils 3.EaysUIResult 4.ExceptionUtil 5 FastDfsClientUtil 6.FtpUtil 7.HttpClientUtil 8.IDUtils 9.JosnUtils 10.PictureResult

    FTP文件上传

    这里我们将深入探讨如何在Java中实现图片文件的FTP上传,以及如何使用`FtpUtil.java`工具类。 首先,`FtpUtil.java`通常是一个封装了FTP操作的工具类,包括连接、登录、上传文件、断开连接等方法。在`FtpUtil`中,...

    FTPUtil.java

    java FTP工具类,里面包含登陆,注销,查询FTP文件夹,以及下载进度条输出

Global site tag (gtag.js) - Google Analytics