创建json文件上传下载ftp
- package org.jeecg.modules.util;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.OutputStreamWriter;
- import java.io.Writer;
- /**
- * @Description: TODO 创建json文件
- * @author:
- * @date: 2020年12月14日 16:01
- */
- public class CreateFileUtil {
- public static boolean createJsonFile(String jsonString, String filePath, String fileName) {
- // 标记文件生成是否成功
- boolean flag = true;
- // 拼接文件完整路径
- String fullPath = filePath + File.separator + fileName + ".json";
- // 生成json格式文件
- try {
- // 保证创建一个新文件
- File file = new File(fullPath);
- if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录
- file.getParentFile().mkdirs();
- }
- if (file.exists()) { // 如果已存在,删除旧文件
- file.delete();
- }
- file.createNewFile();
- if (jsonString.indexOf("'") != -1) {
- //将单引号转义一下,因为JSON串中的字符串类型可以单引号引起来的
- jsonString = jsonString.replaceAll("'", "\\'");
- }
- if (jsonString.indexOf("\"") != -1) {
- //将双引号转义一下,因为JSON串中的字符串类型可以单引号引起来的
- jsonString = jsonString.replaceAll("\"", "\\\"");
- }
- if (jsonString.indexOf("\r\n") != -1) {
- //将回车换行转换一下,因为JSON串中字符串不能出现显式的回车换行
- jsonString = jsonString.replaceAll("\r\n", "\\u000d\\u000a");
- }
- if (jsonString.indexOf("\n") != -1) {
- //将换行转换一下,因为JSON串中字符串不能出现显式的换行
- jsonString = jsonString.replaceAll("\n", "\\u000a");
- }
- // 格式化json字符串
- jsonString = JsonFormatTool.formatJson(jsonString);
- // 将格式化后的字符串写入文件
- Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
- write.write(jsonString);
- write.flush();
- write.close();
- } catch (Exception e) {
- flag = false;
- e.printStackTrace();
- }
- // 返回是否成功的标记
- return flag;
- }
- }
- package org.jeecg.modules.util;
- import lombok.extern.slf4j.Slf4j;
- 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;
- import java.io.*;
- /**
- * @Description: TODO ftp上传下载文件
- * @author:
- * @date: 2020年12月21日 10:32
- */
- @Slf4j
- public class FtpUtil {
- /**
- * Description: 向FTP服务器上传文件
- *
- * @param host FTP服务器hostname
- * @param port FTP服务器端口
- * @param username FTP登录账号
- * @param password FTP登录密码
- * @param basePath FTP服务器基础目录
- * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为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) {
- log.info("host === "+host);
- log.info("port === "+port);
- log.info("username === "+username);
- log.info("host === "+host);
- log.info("password === "+password);
- log.info("basePath === "+basePath);
- log.info("filePath === "+filePath);
- 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();
- log.info("reply"+reply);
- if (!FTPReply.isPositiveCompletion(reply)) {
- ftp.disconnect();
- log.info("ftp服务器连接失败 111111");
- log.info("result === "+result);
- return result;
- }
- //切换到上传目录
- if (!ftp.changeWorkingDirectory(basePath + filePath)) {
- log.info("进入到上传文件分支");
- //如果目录不存在创建目录
- 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
- */
- 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().contains(fileName)) {
- File localFile = new File(localPath + "/" + ff.getName());
- OutputStream is = new FileOutputStream(localFile);
- boolean flag = ftp.retrieveFile(ff.getName(), is);
- is.close();
- if (flag) {
- ftp.changeWorkingDirectory(remotePath);
- int count = ftp.dele(ff.getName());
- if (count > 0) {
- log.info("成功删除ftp服务器上文件名为" + ff.getName() + "的文件");
- }
- }
- }
- }
- ftp.logout();
- result = true;
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (ftp.isConnected()) {
- try {
- ftp.disconnect();
- } catch (IOException ioe) {
- }
- }
- }
- return result;
- }
- }
- package org.jeecg.modules.util;
- /**
- * @Description: TODO 工具类
- * @author:
- * @date: 2020年12月14日 16:02
- */
- public class JsonFormatTool {
- /**
- * 单位缩进字符串。
- */
- private static String SPACE = " ";
- /**
- * 返回格式化JSON字符串。
- *
- * @param json 未格式化的JSON字符串。
- * @return 格式化的JSON字符串。
- */
- public static String formatJson(String json) {
- StringBuffer result = new StringBuffer();
- int length = json.length();
- int number = 0;
- char key = 0;
- // 遍历输入字符串。
- for (int i = 0; i < length; i++) {
- // 1、获取当前字符。
- key = json.charAt(i);
- // 2、如果当前字符是前方括号、前花括号做如下处理:
- if ((key == '[') || (key == '{')) {
- // (1)如果前面还有字符,并且字符为“:”,打印:换行和缩进字符字符串。
- if ((i - 1 > 0) && (json.charAt(i - 1) == ':')) {
- result.append('\n');
- result.append(indent(number));
- }
- // (2)打印:当前字符。
- result.append(key);
- // (3)前方括号、前花括号,的后面必须换行。打印:换行。
- result.append('\n');
- // (4)每出现一次前方括号、前花括号;缩进次数增加一次。打印:新行缩进。
- number++;
- result.append(indent(number));
- // (5)进行下一次循环。
- continue;
- }
- // 3、如果当前字符是后方括号、后花括号做如下处理:
- if ((key == ']') || (key == '}')) {
- // (1)后方括号、后花括号,的前面必须换行。打印:换行。
- result.append('\n');
- // (2)每出现一次后方括号、后花括号;缩进次数减少一次。打印:缩进。
- number--;
- result.append(indent(number));
- // (3)打印:当前字符。
- result.append(key);
- // (4)如果当前字符后面还有字符,并且字符不为“,”,打印:换行。
- if (((i + 1) < length) && (json.charAt(i + 1) != ',')) {
- result.append('\n');
- }
- // (5)继续下一次循环。
- continue;
- }
- // 4、如果当前字符是逗号。逗号后面换行,并缩进,不改变缩进次数。
- /*if ((key == ',')) {
- result.append(key);
- result.append('\n');
- result.append(indent(number));
- continue;
- }*/
- // 5、打印:当前字符。
- result.append(key);
- }
- return result.toString();
- }
- /**
- * 返回指定次数的缩进字符串。每一次缩进三个空格,即SPACE。
- *
- * @param number 缩进次数。
- * @return 指定缩进次数的字符串。
- */
- private static String indent(int number) {
- StringBuffer result = new StringBuffer();
- for (int i = 0; i < number; i++) {
- result.append(SPACE);
- }
- return result.toString();
- }
- }
创建json文件上传下载ftp的更多相关文章
- 【FTP】FTP文件上传下载-支持断点续传
Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...
- 转:【专题十一】实现一个基于FTP协议的程序——文件上传下载器
引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...
- Java实现FTP批量大文件上传下载篇1
本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量.大文件的上传下载控件.文章在比较了一系列FTP客户库的基础上,就其中一个比 ...
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
- 专题十一:实现一个基于FTP协议的程序——文件上传下载器
引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...
- SpringMVC——返回JSON数据&&文件上传下载
--------------------------------------------返回JSON数据------------------------------------------------ ...
- ftp文件上传下载命令
介绍:从本地以用户wasqry登录的机器1*.1**.21.67上通过ftp远程登录到ftp服务器上,登录用户名是lte****,以下为使用该连接做的实验. 查看远程ftp服务器上用户lte**** ...
- JAVA中使用FTPClient实现文件上传下载实例代码
一.上传文件 原理就不介绍了,大家直接看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- Android okHttp网络请求之文件上传下载
前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...
- FastDFS实现文件上传下载实战
正好,淘淘商城讲这一块的时候,我又想起来当时老徐让我写过一个关于实现FastDFS实现文件上传下载的使用文档,当时结合我们的ITOO的视频系统和毕业论文系统,整理了一下,有根据网上查到的知识,总结了一 ...
随机推荐
- Transformers包使用记录
Transformers是著名的深度学习预训练模型集成库,包含NLP模型最多,CV等其他领域也有,支持预训练模型的快速使用和魔改,并且模型可以快速在不同的深度学习框架间(Pytorch/Tensorf ...
- VAE变分自编码器Keras实现
变分自编码器(variational autoencoder, VAE)是一种生成模型,训练模型分为编码器和解码器两部分. 编码器将输入样本映射为某个低维分布,这个低维分布通常是不同维度之间相互独立的 ...
- Spring源码学习 ------ IoC——AOP
一直想抽空把Spring源码拿来读读,但真正去做这件事的时候发现不简单,Spring发展这么多年,它的规模已不是一个一般的开源框架所能比的,它的主要架构和流程不是非常清晰,很难抓到要害,但有一点可以肯 ...
- KnowledgeManagement
知识管理建议 总则 总参 从无知到有知 资料收集的习惯 发表是最好的记忆 Wiki 使用 建议: Blog 写作 Discuss 搜索技巧 回复:Yibie的知识管理流程与工具选择 一.个人知识管理的 ...
- python之environs
下面推荐一个 environs 库,利用它我们可以轻松地设置各种类型的环境变量. 安装: pip3 install environs 好,安装之后,我们再来体验一下使用 environs 来设置环境变 ...
- HTML5 网络监听,全屏
1.网络状态监听 online事件:网络重新连通时触发 offline事件:网络断开时触发 <script> // 监听网络连接 window.addEventListener(" ...
- 前后端数据传递之form-data
前情 最近在项目开发中,跟服务端连调发现接口一直报错,服务端一直提示是数据没有传,而通过浏览器控制台发现数据是有传的. 坑 服务通过postman自测是OK的.经过和服务端一起定位发现服务端只接收以f ...
- Flutter之GetX之国际化
Flutter之GetX之国际化 在GetMaterialApp中设置 GetMaterialApp( locale: Get.deviceLocale, translations: Messages ...
- tar/zip命令加密压缩
回到顶部 场景 Centos6下使用加密压缩,可以从A机器到B机器解压. 可用在kali上解压就不行. 回到顶部 命令 解包 tar zxvf FileName.tar 打包 tar czvf Fil ...
- Qt音视频开发04-保存音频文件(pcm/wav/aac)
一.前言 音频的保存相对来说比视频的要简单,具有通用性,不需要经过ffmpeg的编码,ffmpeg解码出来后一般会转换成pcm原始的数据用来播放,所以对数据直接写文件即可,但是这种格式是无法用播放器直 ...