java ftp 上传下载工具类

  1 package com.mohecun.utils;
  2
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileNotFoundException;
  6 import java.io.FileOutputStream;
  7 import java.io.IOException;
  8 import java.io.InputStream;
  9 import java.io.OutputStream;
 10
 11 import org.apache.commons.net.ftp.FTP;
 12 import org.apache.commons.net.ftp.FTPClient;
 13 import org.apache.commons.net.ftp.FTPFile;
 14 import org.apache.commons.net.ftp.FTPReply;
 15
 16 /**
 17  * ftp上传下载工具类
 18  * <p>Title: FtpUtil</p>
 19  * <p>Description: </p>
 20  * <p>Company: www.itcast.com</p>
 21  * @version 1.0
 22  */
 23 public class FtpUtil {
 24
 25     /**
 26      * Description: 向FTP服务器上传文件
 27      * @param host FTP服务器hostname
 28      * @param port FTP服务器端口
 29      * @param username FTP登录账号
 30      * @param password FTP登录密码
 31      * @param basePath FTP服务器基础目录
 32      * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
 33      * @param filename 上传到FTP服务器上的文件名
 34      * @param input 输入流
 35      * @return 成功返回true,否则返回false
 36      */
 37     public static boolean uploadFile(String host, int port, String username, String password, String basePath,
 38             String filePath, String filename, InputStream input) {
 39         boolean result = false;
 40         FTPClient ftp = new FTPClient();
 41         try {
 42             int reply;
 43             ftp.connect(host, port);// 连接FTP服务器
 44             // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
 45             ftp.login(username, password);// 登录
 46             reply = ftp.getReplyCode();
 47             if (!FTPReply.isPositiveCompletion(reply)) {
 48                 ftp.disconnect();
 49                 return result;
 50             }
 51             //切换到上传目录
 52             if (!ftp.changeWorkingDirectory(basePath+filePath)) {
 53                 //如果目录不存在创建目录
 54                 String[] dirs = filePath.split("/");
 55                 String tempPath = basePath;
 56                 for (String dir : dirs) {
 57                     if (null == dir || "".equals(dir)) continue;
 58                     tempPath += "/" + dir;
 59                     if (!ftp.changeWorkingDirectory(tempPath)) {
 60                         if (!ftp.makeDirectory(tempPath)) {
 61                             return result;
 62                         } else {
 63                             ftp.changeWorkingDirectory(tempPath);
 64                         }
 65                     }
 66                 }
 67             }
 68             //设置上传文件的类型为二进制类型
 69             ftp.setFileType(FTP.BINARY_FILE_TYPE);
 70             //上传文件
 71             if (!ftp.storeFile(filename, input)) {
 72                 return result;
 73             }
 74             input.close();
 75             ftp.logout();
 76             result = true;
 77         } catch (IOException e) {
 78             e.printStackTrace();
 79         } finally {
 80             if (ftp.isConnected()) {
 81                 try {
 82                     ftp.disconnect();
 83                 } catch (IOException ioe) {
 84                 }
 85             }
 86         }
 87         return result;
 88     }
 89
 90     /**
 91      * Description: 从FTP服务器下载文件
 92      * @param host FTP服务器hostname
 93      * @param port FTP服务器端口
 94      * @param username FTP登录账号
 95      * @param password FTP登录密码
 96      * @param remotePath FTP服务器上的相对路径
 97      * @param fileName 要下载的文件名
 98      * @param localPath 下载后保存到本地的路径
 99      * @return
100      */
101     public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
102             String fileName, String localPath) {
103         boolean result = false;
104         FTPClient ftp = new FTPClient();
105         try {
106             int reply;
107             ftp.connect(host, port);
108             // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
109             ftp.login(username, password);// 登录
110             reply = ftp.getReplyCode();
111             if (!FTPReply.isPositiveCompletion(reply)) {
112                 ftp.disconnect();
113                 return result;
114             }
115             ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
116             FTPFile[] fs = ftp.listFiles();
117             for (FTPFile ff : fs) {
118                 if (ff.getName().equals(fileName)) {
119                     File localFile = new File(localPath + "/" + ff.getName());
120
121                     OutputStream is = new FileOutputStream(localFile);
122                     ftp.retrieveFile(ff.getName(), is);
123                     is.close();
124                 }
125             }
126
127             ftp.logout();
128             result = true;
129         } catch (IOException e) {
130             e.printStackTrace();
131         } finally {
132             if (ftp.isConnected()) {
133                 try {
134                     ftp.disconnect();
135                 } catch (IOException ioe) {
136                 }
137             }
138         }
139         return result;
140     }
141
142     public static void main(String[] args) {
143         try {
144             FileInputStream in=new FileInputStream(new File("D:\\temp\\image\\gaigeming.jpg"));
145             boolean flag = uploadFile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images","/2015/01/21", "gaigeming.jpg", in);
146             System.out.println(flag);
147         } catch (FileNotFoundException e) {
148             e.printStackTrace();
149         }
150     }
151 }
时间: 2024-10-13 04:44:02

java ftp 上传下载工具类的相关文章

FTP 上传下载工具类

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.SocketException; import o

高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上传下载. 这两种感觉都有利弊. 第一种实现了代码复用,但是配置信息全需要写在类中,维护比较复杂. 第二种如果是spring框架,可以通过propertis文件,动态的注入配置信息,但是又不能代码复用. 所以我打算自己实现一个工具类,来把上面的两种优点进行整合.顺便把一些上传过程中一些常见的问题也给解

java ftp上传下载

/** * Description: 从FTP服务器下载文件 * @param url FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param remotePath FTP服务器上的相对路径 * @param fileName 要下载的文件名 * @param localPath 下载后保存到本地的路径 * @return */ public static

Java FTP上传下载的实现

昨天修改了一个接口,看到它涉及FTP的上传与下载,用的是:org.apache.commons.net.ftp.FTPClient,它只支持FTP,不支持SFTP 总结下来如此使用: //创建对象 FTPClient fTPClient=new FTPClient(); //创建连接 fTPClient.connect("192.168.1.11",21); //登陆 fTPClient.login("root", "root"); //设置传输

android 网络文件上传下载工具类总结

1.获取文件的最后修改时间 @SuppressLint("SimpleDateFormat") public String getFileDataTime(File file) { Date date = new Date(file.lastModified()); SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 24小时制 String LgTime = sdfo

简单的FTP上传下载(java实现)

/** *阅读前请自己在win7上建立FTP主机 *具体步骤如:http://jingyan.baidu.com/article/574c5219d466c36c8d9dc138.html * 然后将以下FTP,username,password分别改成你的FTP ip地址 用户名 密码即可 * 本例子用了apche的commons-net-3.3.jar以方便FTP的访问 请手动buid -path * 待完成版 刷新按钮 登录 都还没有做 而且上传 下载 完成后都需要重新运行 * 2014-

java做的比较完善的FTP上传下载文件服务器源码

Filename: ftp.java Author: leetsing(elove) Create date: 2004-08-30 Use: connect to FTP server,then upload and download file Modify date: 2004-09-05 add to upload file 2004-09-13 add to download file Copy right: Magisky Media Technology Co.,Ltd. *****

28、java文件上传下载、邮件收发

文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件

Java Sftp上传下载文件

需要使用jar包  jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import co