package xxxx;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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; public class FtpUtil { private final static String host = "192.168.xxx.xxxx"; private final static String basePath = "/auth"; private final static String username = ""; private final static String password = ""; public static boolean uploadFile(String localPath) throws IOException {
File file = new File(localPath);
FileInputStream fileInputStream = null;
boolean result = false;
FTPClient ftp = new FTPClient();
try {
//----------------------
//尝试添加超时时间 解决阻塞问题
ftp.setDefaultTimeout(60 * 1000);
ftp.setConnectTimeout(60 * 1000);
ftp.setDataTimeout(60 * 1000);
//----------------------
fileInputStream = new FileInputStream(file);
String fileName = file.getName();
int reply;
ftp.connect(host);// 连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
//230代表登录成功
System.out.println(reply);
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(basePath);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//ftp.setBufferSize(1024);
ftp.setControlEncoding("GBK");
//设置被动模式
ftp.enterLocalPassiveMode();
//设置上传文件的类型为二进制类型
//上传文件 result = ftp.storeFile(new String(fileName.getBytes("GBK"), "iso-8859-1"), fileInputStream);
fileInputStream.close();
ftp.logout();
// result = true;
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) { }
}
}
return result; } public static boolean uploadFile(File file) throws IOException {
FileInputStream fileInputStream = null;
boolean result = false;
FTPClient ftp = new FTPClient();
try {
//----------------------
//尝试添加超时时间 解决阻塞问题
ftp.setDefaultTimeout(60 * 1000);
ftp.setConnectTimeout(60 * 1000);
ftp.setDataTimeout(60 * 1000);
//----------------------
fileInputStream = new FileInputStream(file);
String fileName = file.getName();
int reply;
ftp.connect(host);// 连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
//230代表登录成功
System.out.println(reply);
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(basePath);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//ftp.setBufferSize(1024);
ftp.setControlEncoding("GBK");
//设置被动模式
ftp.enterLocalPassiveMode();
//设置上传文件的类型为二进制类型
//上传文件 result = ftp.storeFile(new String(fileName.getBytes("GBK"), "iso-8859-1"), fileInputStream);
fileInputStream.close();
ftp.logout();
// result = true;
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) { }
}
}
return result; } public static boolean downloadFile(String remotePath, String fileName, String localPath) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host);
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
System.out.println(reply);
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
ftp.enterLocalPassiveMode();
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;
} /*public static void main(String[] args) {
String localpath = "D:/ftp测试.txt";
System.out.println(uploadFile(localpath)); System.out.println(downloadFile("/auth", "ftp测试.txt", "D:/log"));
}*/
}

使用的jar包

<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>2.0</version>
</dependency>

FtpUtil 工具类的更多相关文章

  1. FTPUtil工具类

    package com.xxx.common.util; import java.io.File; import java.io.FileOutputStream; import java.io.IO ...

  2. FTP工具类开发

    正所谓工欲善其事必先利其器,熟悉了下一套流程,以此铭记. 1.FTP服务搭建 由于本人使用wondiow系统,所以针对window的童鞋们可以查看.至于windowX这里配置类似,所以不要纠结于win ...

  3. FTP上传-封装工具类

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  4. java中常用的工具类(二)

    下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil           Java   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

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

    前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上 ...

  6. Java Utils工具类大全(转)

    源码和jar见:https://github.com/evil0ps/utils #Java Utils --- 封装了一些常用Java操作方法,便于重复开发利用. 另外希望身为Java牛牛的你们一起 ...

  7. Java操作FTP工具类(实例详解)

    这里使用Apache的FTP jar 包 没有使用Java自带的FTPjar包  工具类 package com.zit.ftp; import java.io.File; import java.i ...

  8. ftp上传下载工具类

    package com.taotao.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNo ...

  9. Java Utils工具类大全

    源码和jar见:https://github.com/evil0ps/utils #Java Utils --- 封装了一些常用Java操作方法,便于重复开发利用. 另外希望身为Java牛牛的你们一起 ...

随机推荐

  1. Android原生下拉刷新SwipeRefreshLayout实践

    本篇文章翻译自Ravi Tamada的Android Swipe Down to Refresh ListView Tutorial 首先来看一下效果图 你应该发现很多的android app比如Tw ...

  2. 一个下载git库代码的脚本

    由于每日构建需求, 须要用脚本下载代码, 实现自己主动化编译, 这个脚本是整个系统的一小块功能 #!/bin/bash #@author Liuyang #@date 2015-06-23 funct ...

  3. 去除前后空格,Oracle和SQLSERVER都适用。ltrim(rtrim(’ ‘))

    Oracle自带去除方法:trim(). 但是sql语法中没有直接去除两头空格的函数,但有ltrim()去除左空格rtrim()去除右空格. 合起来用就是sql的trim()函数,即select lt ...

  4. 解决安装Ubuntu之后找不到无线网卡驱动的问题

    为了不浇灭大家尝试ubuntu的冲动,昨天我安装了ubuntu 14.04 LTS版本号,从安装到又一次开机都非常顺利.PS:不会安装的请找教程区把,网上非常多,CSDN论坛都有. 安装之后当你奇妙的 ...

  5. spring自己主动装配Bean属性

    spring提供了3种类型的自己主动装配 byName:把与Bean的属性具有同样名字(或者ID)的其它Bean自己主动装配到Bean的相应属性中. byType:把与Bean的属性具有同样类型的其它 ...

  6. ActiveMQ与MSMQ的异同

    http://www.cnblogs.com/luluping/archive/2010/11/03/1867841.html      目前常用的消息队列组建无非就是MSMQ和ActiveMQ,至于 ...

  7. js - 类模拟

    JavaScript 中并没有真正的类,但JavaScript 中有 构造函数 和 new 运算符. - 任何JavaScript 函数都可以用做构造函数, - 构造函数必须使用 new 运算符来创建 ...

  8. 使用Linux环境变量教程

    什么是环境变量? bash shell用一个叫作环境变量( environment variable)的特性来存储有关shell会话和工作环境的信息(这也是它们被称作环境变量的原因).这项特性允许你在 ...

  9. Atitit.异常机制的设计原理

    Atitit.异常机制的设计原理 缺陷 关键是只要知晓有一个异常表的存在,try 的范围就是体现在异常表行记录的起点和终点.JVM 在 try 住的代码区间内如有异常抛出的话,就会在当前栈桢的异常表中 ...

  10. C# Post Json数据到对方url

    1. /// <summary> /// 调用对方Url,Post上传数据 /// </summary> /// <param name="postData&q ...