- 浏览: 545608 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (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 530import java.io.UnsupportedEnc ... -
lbs比较两点坐标
2018-01-16 09:56 0int distance = (int) (S2LatLng. ... -
redis应用方法
2017-11-30 11:47 5681:统计一段时间内,某 ... -
风控系统1
2017-10-12 18:40 665... -
可以保持session的java代码片段
2017-07-12 21:04 675import java.io.File; impor ... -
ubuntu 搭建开发环境
2015-06-16 15:39 0jdk 可以参看其他网站; export JAVA_HO ... -
主线程等待10秒钟,无应答返回(一)
2015-06-05 15:26 2530场景需求: 其他应用向我们的应用A发来请求,如果应用 ... -
drools书籍
2015-03-13 18:23 972附件中有drools书籍 -
一个Tomcat支持不同的域名访问各自不同程序的配置方法
2015-03-11 09:56 566更多信息可以参考网址:http://329937021.i ... -
netty5 包简读
2015-02-13 18:16 0io.netty.bootstrap; 启动器i ... -
netty5 入门翻译
2015-02-12 18:01 875翻译网页网址:http://n ... -
spring-jms
2015-01-12 11:45 724这里写篇文章记录一下jms持久化到mysqlde 使用方 ... -
git 命令大全
2014-11-12 10:03 727git 学习网址http://git-scm.com/bo ... -
groovy eclipse 插件
2014-10-06 16:58 745eclipse version 4.4.0 groovy ... -
docx4j word 工具类及测试类
2014-10-02 22:14 1554import java.io.ByteArrayInputS ... -
docx4j 替换文本
2014-09-29 11:25 1493采用docx4j 替换word模板内容,并输出进行保存 ... -
docx4j 动态生成表格 (一 )
2014-09-28 19:18 1859使用docx4j模板动态制作表格代码实现过程(一 ),模 ... -
java 开发的各种例子
2014-08-13 17:55 654springmvc + springsecurity 实 ... -
tomcat 根项目部署方式
2014-07-08 09:50 596<Host name="admin.yid ... -
java多线程,线程安全
2014-05-29 14:35 2340今天研究一下java的多 ...
相关推荐
pimpinella_3cd_01_0716
FIB English learning
X86-jq安装包
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
大圣挪车小程序1.3.5 前端
Manus.im 产品及开发团队研究报告.pdf
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
sun_3ck_01a_0918
下载 1. 单击“立即下载”,以下载该文件。 2. 出现“文件下载”窗口后,单击“保存”,以将文件保存到硬盘。 安装 1. 浏览至文件下载目标位置并双击新下载的文件。 2. 仔细阅读对话窗口中显示的发布信息。 3. 下载并安装对话窗口中标识的任何必备项,然后再继续。 4. 单击“Install”(安装)按钮。 5. 按照其余提示执行更新。 安装 1. 将解压的文件复制到可访问Windows的介质。 2. 将系统重新引导至Windows操作系统。 3. 打开“服务器管理器”->“设备管理器”->“存储控制器”,然后单击“PERC控制器”。 5. 单击“更新驱动程序软件”,并按照提示更新驱动程序。 4. 重新引导系统以使更改生效。
支持所有操作系统一键安装。
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
swanson_01_1106
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
sun_3ck_01_0919
各城市方言距离数据-中山大学岭南学院产业与区域经济研究中心 方言距离是指两种或多种方言之间的相似程度或差异程度。参考中山大学岭南学院产业与区域经济研究中心的刘毓芸等(2015)文献。他们基于方言树图,并参考《汉语方言大词典》和《中国语言地图集》对方言的划分,将汉语方言从宽泛到具体分为以下几个层级:汉语→方言大区→方言区→方言片。为了量化县与县之间的方言差异,他们采用了一种赋值方法: 若它们分属不同方言大区,则距离为3。: 若两个县同属一个方言片,则它们之间的方言距离为0; 若两个县属于同一方言区但不同方言片,则距离为1; 若它们属于同一方言大区但不同方言区,则距离为2; 方言距离是一个反映方言之间相似程度或差异程度的重要指标,它在语音识别、方言研究等领域具有广泛的应用价值。 参考文献:[1]刘毓芸, 徐现祥, 肖泽凯. 2015. 劳动力跨方言流动的倒U型模式[J]. 经济研究, 50(10): 134-146+162. 指标 语系、语族、方言大区、方言区/语支、方言片/语种、Supergroup、Dialect、group、Sub-dialect、groupPref_1、Pref_2、DiaDist、PrefCode_1、PrefCode_2等等。
基于PCA算法的人脸识别MATLAB源码
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
lim_3ck_01a_0518