- 浏览: 542991 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (278)
- freemarker (6)
- flex应用 (12)
- Ext应用 (11)
- 软件 (16)
- java (61)
- 报表 (6)
- 框架基础 (6)
- 登录页面素材 (7)
- oracle (1)
- cas (10)
- lucene (6)
- linux (11)
- 视频 (10)
- springmvc (3)
- 视频服务器相关 (12)
- 开发工具 (7)
- IOS (20)
- 网站相关 (4)
- Java 任务调度系统带图形界面的 (1)
- maven (2)
- android (29)
- hadoop (3)
- SpagoBI (3)
- docx4j (4)
- 多线程 (2)
- storm (2)
- mobile 框架 (3)
- scala (1)
- socket (1)
- saiku (1)
最新评论
-
ZXCLTN:
1.streams目录,在里面放些flv,mp3之类的文件,这 ...
red5 整合到tomcat中(二) -
ZXCLTN:
写的没偷没尾的,还不如提供整个项目下载
red5 整合到tomcat中(二) -
01jiangwei01:
测试方法1:测试50个线 ...
hibernate 乐观锁 测试 -
01jiangwei01:
测试方法1:测试50个线程,同时并发访问。目标:只有一个通过, ...
hibernate 乐观锁 测试 -
xiaobadi:
你每次登陆都是跳到http://localhost:8081/ ...
cas 系统实例 服务端配置(二) 自定义登录
工具类:
使用方法:
import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.Properties; /** * FTP文件上传、下载操作 * * Created on 2017年12月19日17:49:02 * @author lilongsheng * @since 1.0 */ public final class FtpUtil { private static final Logger logger = LoggerFactory.getLogger(FtpUtil.class); public static final Properties CONFIG = getConfigProperties(); public static final String PROTOCAL= "ftp://"; public static final String REMOTE_ADDRESS = CONFIG.getProperty("ftp.sqyc.host"); public static final String REMOTE_PATH = CONFIG.getProperty("ftp.sqyc.remotePath"); public static final String REMOTE_PORT = CONFIG.getProperty("ftp.sqyc.port"); private static final String PASSWORD = CONFIG.getProperty("ftp.sqyc.password"); private static final String USER_NAME = CONFIG.getProperty("ftp.sqyc.name"); private static Properties ftpPathConfig; private FTPClient ftpClient; private FtpUtil() { } public static FtpUtil getInstance() { return new FtpUtil(); } public static Properties getConfigProperties() { if(CONFIG == null){ Properties p = new Properties(); try { p.load(FtpUtil.class.getResourceAsStream("/ftp.properties")); return p ; } catch (IOException e) { e.printStackTrace(); logger.error("风控-上传下载异常-加载配置文件 error:{}",e.getMessage()); return null; } }else{ return CONFIG; } } /** * 连接FTP服务器 * @param remotePath 远程访问路径 */ public void connectServer(String remotePath) { String path=remotePath; try { if (path == null) { path = FtpUtil.REMOTE_PATH; } ftpClient = new FTPClient(); if (REMOTE_PORT == null || 0 == Integer.parseInt(REMOTE_PORT)) { ftpClient.connect(REMOTE_ADDRESS); } else { ftpClient.connect(REMOTE_ADDRESS, Integer.parseInt(REMOTE_PORT)); } int reply = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftpClient.disconnect(); // FTP server refused connection. closeConnect(); System.exit(1); } ftpClient.login(USER_NAME, PASSWORD); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // login success !!! if (path.length() != 0) { // boolean flag = createDirecroty(path, ftpClient); /*if (flag) { // set working directory successful !!! }*/ } } catch (IOException e) { // not login !!! e.printStackTrace(); } } public void connectServer() { connectServer(null); } /** * 关闭与FTP服务器之间的连接 */ public void closeConnect() { try { ftpClient.disconnect(); // disconnect success !!! } catch (IOException e) { // not disconnect !!! e.printStackTrace(); } } /** * 创建工作目录,并将当前工作目录定位到新创建的目录 * 采用一次命令创建一个文件夹的方式,已兼容 IBM FTP * @param path 要创建的目录路径 * @return 是否操作成功 * @throws java.io.IOException */ public boolean alertWorkingDirectory(String path) throws IOException { boolean flag = ftpClient.changeWorkingDirectory(path); if (!flag) { String[] ps = path.split("/"); for (String p : ps) { if (!ftpClient.changeWorkingDirectory(p)) { if (ftpClient.makeDirectory(p)) { flag = ftpClient.changeWorkingDirectory(p); } else { flag = false; break; } } } } return flag; } /** * Description: 递归创建远程服务器目录 * * @param remote * 远程服务器文件绝对路径 * @param ftpClient * FTPClient 对象 * @return boolean 目录创建是否成功 * @throws java.io.IOException */ public boolean createDirecroty(String remote, FTPClient ftpClient) throws IOException { boolean status = false; String directory = remote.substring(0, remote.lastIndexOf("/") + 1); if (!directory.equalsIgnoreCase("/") && !ftpClient.changeWorkingDirectory(new String(directory .getBytes("utf-8"), "iso-8859-1"))) { // 如果远程目录不存在,则递归创建远程服务器目录 int start; int end; if (directory.startsWith("/")) { start = 1; } else { start = 0; } end = directory.indexOf("/", start); while (true) { String subDirectory = new String(remote.substring(start, end) .getBytes("utf-8"), "iso-8859-1"); if (!ftpClient.changeWorkingDirectory(subDirectory)) { if (ftpClient.makeDirectory(subDirectory)) { ftpClient.changeWorkingDirectory(subDirectory); } else { // 创建目录失败 return status; } } start = end + 1; end = directory.indexOf("/", start); // 检查所有目录是否创建完毕 if (end <= start) { break; } } } status = true; return status; } /** * 文件上传 * @param path 文件保存路径 * @param fileName 文件名称 * @param inputStream 文件流 * @return 操作是否成功 */ public boolean upload(String path, String fileName, InputStream inputStream) { boolean flag = false; try { createDirecroty(path, ftpClient); flag = ftpClient.storeFile(fileName, inputStream); /*if (flag) { // upload success !!! }*/ } catch (IOException e) { // not upload !!! e.printStackTrace(); } return flag; } /** * 根据传入的路径建立输出流 * @Version1.0 2014-7-9 上午11:55:14 by 张延伟(yw.zhang02@zuche.com)创建 * @param path 文件保存路径 * @param fileName 文件名称 * @return */ public OutputStream storeFileStream(String path, String fileName) { OutputStream os = null; try { createDirecroty(path, ftpClient); os = ftpClient.storeFileStream(fileName); } catch (IOException e) { e.printStackTrace(); } return os; } /** * 判断文件是否存在 * @param path 文件路径 * @param fileName 文件名称 * @return ture:存在 false:不存在 */ public boolean isFileExist(String path, String fileName){ try { boolean cdStatus = ftpClient.changeWorkingDirectory(new String(path.getBytes("utf-8"), "iso-8859-1")); if(!cdStatus){ return false; }else { String[] fileNames = ftpClient.listNames(); return Arrays.binarySearch(fileNames, fileName) > -1; } } catch (Exception e) { e.printStackTrace(); logger.error("风控-上传下载异常-文件是否存在 error:{}",e.getMessage()); return false; } } /** * 文件下载 * @param fileName 文件的完整路径 * @return 下载到的文件流 */ public InputStream download(String fileName) { InputStream inputStream = null; try { inputStream = ftpClient.retrieveFileStream(fileName); } catch (IOException e) { // not download !!! e.printStackTrace(); } return inputStream; } /** * Description: 获取FTP服务器上文件存储目录 * * @param type * 文件所属模块类型 * @return 文件服务器端路径 */ public static String getRemoteFileDir(int type){ StringBuilder remoteFileDir = new StringBuilder(); remoteFileDir.append(getFtpPathConfig().getProperty(String.valueOf(type))); SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd"); String datePath = sf.format(new Date()); remoteFileDir.append(datePath).append("/"); return remoteFileDir.toString(); } private static Properties getFtpPathConfig(){ synchronized (FtpUtil.class) { if (ftpPathConfig == null) { Properties p = new Properties(); InputStream in = null; try { in = FtpUtil.class.getResourceAsStream("/ftpUploadPathConfig.properties"); p.load(in); } catch (IOException e) { e.printStackTrace(); logger.error("风控-上传下载异常-文件路径配置 error:{}",e.getMessage()); }finally{ if(in != null){ try { in.close(); } catch (IOException e) { in = null; } } } ftpPathConfig = p; } } return ftpPathConfig; } public boolean completePendingCommand(){ try { return ftpClient.completePendingCommand(); } catch (IOException e) { e.printStackTrace(); logger.error("风控-上传下载异常-执行命令 error:{}",e.getMessage()); return false; } } }
使用方法:
FtpUtil ftpUtil = FtpUtil.getInstance(); try { String extension = FilenameUtils.getExtension(uploadFile.getOriginalFilename()); String uuid = UUID.randomUUID().toString(); String timeStamp = System.currentTimeMillis() + ""; String filePathDir = getRemoteFileDir(); //开始上传 ftpUtil.connectServer(); boolean uploadFlag = ftpUtil.upload(filePathDir, uuid + "_" + timeStamp + "." + extension, uploadFile.getInputStream()); if (uploadFlag){ ok = true; absoluteUrl = FtpUtils.getFtpServerUrl() + filePathDir + uuid + "_" + timeStamp + "." + extension; oppositeUrl = filePathDir + uuid + "_" + timeStamp + "." + extension; logger.info(" 上传订单附件-absoluteUrl:{" + absoluteUrl + "},oppositeUrl:{" + oppositeUrl + "}"); } } catch (Exception e) { e.printStackTrace(); logger.error(" 上传订单附件-异常 error:{"+e.getMessage() +"}"); }finally { ftpUtil.closeConnect(); }
发表评论
-
AESUtils
2018-01-17 14:13 519import java.io.UnsupportedEnc ... -
lbs比较两点坐标
2018-01-16 09:56 0int distance = (int) (S2LatLng. ... -
redis应用方法
2017-11-30 11:47 5611:统计一段时间内,某 ... -
风控系统1
2017-10-12 18:40 649... -
可以保持session的java代码片段
2017-07-12 21:04 660import java.io.File; impor ... -
ubuntu 搭建开发环境
2015-06-16 15:39 0jdk 可以参看其他网站; export JAVA_HO ... -
主线程等待10秒钟,无应答返回(一)
2015-06-05 15:26 2518场景需求: 其他应用向我们的应用A发来请求,如果应用 ... -
drools书籍
2015-03-13 18:23 968附件中有drools书籍 -
一个Tomcat支持不同的域名访问各自不同程序的配置方法
2015-03-11 09:56 562更多信息可以参考网址:http://329937021.i ... -
netty5 包简读
2015-02-13 18:16 0io.netty.bootstrap; 启动器i ... -
netty5 入门翻译
2015-02-12 18:01 865翻译网页网址:http://n ... -
spring-jms
2015-01-12 11:45 722这里写篇文章记录一下jms持久化到mysqlde 使用方 ... -
git 命令大全
2014-11-12 10:03 718git 学习网址http://git-scm.com/bo ... -
groovy eclipse 插件
2014-10-06 16:58 741eclipse version 4.4.0 groovy ... -
docx4j word 工具类及测试类
2014-10-02 22:14 1549import java.io.ByteArrayInputS ... -
docx4j 替换文本
2014-09-29 11:25 1481采用docx4j 替换word模板内容,并输出进行保存 ... -
docx4j 动态生成表格 (一 )
2014-09-28 19:18 1833使用docx4j模板动态制作表格代码实现过程(一 ),模 ... -
java 开发的各种例子
2014-08-13 17:55 648springmvc + springsecurity 实 ... -
tomcat 根项目部署方式
2014-07-08 09:50 591<Host name="admin.yid ... -
java多线程,线程安全
2014-05-29 14:35 2324今天研究一下java的多 ...
相关推荐
- **上传文件**:调用`FTPClient.storeFile()`或`FTPClient.uploadFile()`方法上传文件。 - **断开连接**:最后,记得调用`FTPClient.logout()`和`FTPClient.disconnect()`断开连接并释放资源。 在开发过程中,还...
5. **文件上传**:使用`storeFile()`方法上传文件。你需要提供远程文件路径和一个InputStream,这个InputStream通常来自本地文件。 ```java File localFile = new File("C:\\local\\file.txt"); InputStream in = ...
javaftp上传文件.txt javaftp上传文件.txt javaftp上传文件.txt
这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...
java使用FTP上传文件,非常实用 包括创建ftp链接,上传
在Java编程环境中,FTP(File Transfer Protocol)上传文件并实现进度条显示是一个常见的需求,尤其在用户界面设计中。下面将详细讲解如何使用Java的Swing库创建一个带有进度条的FTP文件上传功能。 首先,我们需要...
上传小于 1M 文件速度要比用 FTP 协议上传文件略快。但对于批量及大文件的传输可能无能为力。后来决定采用 FTP 协议上传文件大于 1M 的文件速度比 HTTP 快。文件越大,上传的速度就比 HTTP 上传的速度快数倍。 二、...
- `uploadFile(String remoteFilePath, File localFile)`: 上传文件到FTP服务器。 - `downloadFile(String remoteFilePath, File localFile)`: 从FTP服务器下载文件到本地。 - `disconnect()`: 断开与FTP服务器的...
### Java上传文件到FTP知识点详解 #### 一、概述 在现代软件开发中,文件传输是一项常见的需求。其中,FTP(文件传输协议)是最常用的一种文件传输方式之一。本篇文章将详细阐述如何利用Java编程语言实现本地文件...
Java 实现 FTP 自动上传文件是一项常见的任务,尤其在自动化部署、数据同步或者日志传输等场景中。本文将深入探讨如何使用Java编程语言来构建一个FTP文件上传系统,同时结合Log4j日志框架和命令行信息的处理。 首先...
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
### Java FTP 指定下载文件和上传文件到指定的服务器目录 #### 一、概述 在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定...
本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 首先,Java通过`java.net`和`javax.net`包提供了FTP客户端的功能。主要依赖于`java.net....
这个场景中,我们关注的重点是如何在上传过程中显示进度条,并确保该进度条与FTP上传的速度同步,以提供用户友好的交互体验。 在Java中,我们可以使用`java.net`或`org.apache.commons.net`库来实现FTP文件上传。...
Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...
java ftp上传进行文件的读取和上传 上传单个文件的文件流 创建远程服务器目录 删除指定文件 上传单个文件 获取指定ftp目录下文件名
`FtpUtil.java`很可能是一个封装了FTP操作的类,包括连接FTP服务器、登录、设置工作目录、上传文件、下载文件、断开连接等方法。这些方法通过调用Java的`java.net.Socket`类和`commons-net-1.4.1.jar`库中的FTP相关...
Java FTP(File Transfer...总的来说,Java FTP上传IIS的实现涉及到Java网络编程、FTP协议、可能的第三方库使用,以及良好的异常管理和资源管理实践。通过合理的工具类设计,可以创建出高效且易于维护的FTP客户端代码。