捐躯赴国难,视死忽如归。恸哭六军俱缟素,冲冠一怒为红颜。君子坦荡荡,小人长戚戚。风日晴和人意好,夕阳箫鼓几船归。民为贵,社稷次之,君为轻。Java 读写json格式的文件方法详解
文章录入:7747.Net    责任编辑:7747.Net  2837//classes下面的文件
String path= Thread.currentThread().getContextClassLoader().getResource("/").getPath();路径问题:/*** 无package*/System.out.println(this.getClass().getResource("template.xml").getPath());//相对当前Class路径下的template.xmlSystem.out.println(this.getClass().getResource("/template.xml").getPath());//classpath根路径下的template.xmlSystem.out.println(this.getClass().getClassLoader().getResource("template.xml").getPath());//classpath根路径下的template.xml/*** package*/System.out.println(this.getClass().getResource("package/template.xml").getPath());//相对当前Class路径/package路径下的template.xmlSystem.out.println(this.getClass().getResource("/package/template.xml").getPath());//classpath根路径/package路径下的template.xmlSystem.out.println(this.getClass().getClassLoader().getResource("package/template.xml").getPath());//classpath根路径/package路径下的template.xml【字体:小 大】
一、要解决这个问题首先要知道json格式是什么?JSON格式:
比如学生有学号,姓名,性别等。
用json表示则为:
{"studno":"11111","studname":"wwww","studsex":"男"}(各个字段都是字符型)这代表一个学生的信息。如果多个呢?[{"studno":"122222","studname":"wwww","studsex":"男"},
{"studno":"11111","studname":"xxxx","studsex":"男"},
{"studno":"33333","studname":"ssss","studsex":"男"}]这就是json格式。二、那如何操作json格式的文件呢?这个更简单了,说白了就是直接读写文件,再把读出来的文件内容格式化成json就可以了。
三、具体操作。1.我有一个实体类,如下:public class ElectSet {
public String xueqi;
public String xuenian;
public String startTime;
public String endTime;
public int menshu;
public String isReadDB;
//{"xueqi":,"xuenian":,"startTime":,"endTime":,"renshu":,"isReadDB":}
public String getXueqi() {return xueqi;
}
public void setXueqi(String xueqi) {this.xueqi = xueqi;
}
public String getXuenian() {return xuenian;
}
public void setXuenian(String xuenian) {this.xuenian = xuenian;
}
public String getStartTime() {return startTime;
}
public void setStartTime(String startTime) {this.startTime = startTime;
}
public String getEndTime() {return endTime;
}
public void setEndTime(String endTime) {this.endTime = endTime;
}
public int getMenshu() {return menshu;
}
public void setMenshu(int menshu) {this.menshu = menshu;
}
public String getIsReadDB() {return isReadDB;
}
public void setIsReadDB(String isReadDB) {this.isReadDB = isReadDB;
}}2.有一个json格式的文件,存的就是他的信息,如下Sets.json:
{"xuenian":"2007-2008","xueqi":"1","startTime":"2009-07-19 08:30","endTime":"2009-07-22 18:00","menshu":"10","isReadDB":"Y"}3.具体操作.
/*
* 取出文件内容,填充对象
*/
public ElectSet findElectSet(String path){ElectSet electset=new ElectSet();String sets=ReadFile(path);//获得json文件的内容JSONObject jo=JSONObject.fromObject(sets);//格式化成json对象//System.out.println("------------" jo);//String name = jo.getString("xuenian");//System.out.println(name);electset.setXueqi(jo.getString("xueqi"));electset.setXuenian(jo.getString("xuenian"));electset.setStartTime(jo.getString("startTime"));electset.setEndTime(jo.getString("endTime"));electset.setMenshu(jo.getInt("menshu"));electset.setIsReadDB(jo.getString("isReadDB"));return electset;
}
//设置属性,并保存
public boolean setElect(String path,String sets){try {writeFile(path,sets);return true;} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;}
}
//读文件,返回字符串
public String ReadFile(String path){File file = new File(path);BufferedReader reader = null;String laststr = "";try {//System.out.println("以行为单位读取文件内容,一次读一整行:");reader = new BufferedReader(new FileReader(file));String tempString = null;int line = 1;//一次读入一行,直到读入null为文件结束while ((tempString = reader.readLine()) != null) {//显示行号System.out.println("line " line ": " tempString);laststr = laststr tempString;line ;}reader.close();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}return laststr;
}//把json格式的字符串写到文件
public void writeFile(String filePath, String sets) throws IOException {FileWriter fw = new FileWriter(filePath);PrintWriter out = new PrintWriter(fw);out.write(sets);out.println();fw.close();out.close();}4.调用,使用(在网站的controller里调用的)//取出json对象
public void GetElectSettings(HttpServletRequest request,HttpServletResponse response) throws Exception {ElectSet electset=new ElectSet();String absPath = request.getRealPath("\\");String filePath = absPath "public\\sets\\electSets.json";electset=businessService.findElectSets(filePath);//这里是调用,大家自己改改,我调用的业务层的。JSONArray jsonItems = new JSONArray();jsonItems.add(electset);JSONObject jo=new JSONObject();jo.put("data", jsonItems);System.out.println(jo);request.setCharacterEncoding("utf-8");response.setContentType("application/json;charset=utf-8");PrintWriter out = response.getWriter();out.print(jo);
}//修改json文件
public void ChangeElectSet(HttpServletRequest request,HttpServletResponse response) throws Exception {request.setCharacterEncoding("UTF-8");response.setContentType("text/json;charset=utf-8");log.info("reach ChangeElectSet");String json = (String) request.getParameter("json").trim();log.info("Change ElectSet");log.info(json);ElectSet sets = new ElectSet();JSONObject jsonObject = JSONObject.fromObject(json);sets = (ElectSet) JSONObject.toBean(jsonObject, ElectSet.class);if(sets.getIsReadDB()=="false"){sets.setIsReadDB("否");}else{sets.setIsReadDB("是");}String changes="{\"xuenian\":\"";//因为json的属性要用引号,所以要用\"转义一下changes =sets.getXuenian() "\",\"xueqi\":\"" sets.getXueqi() "\",\"startTime\":\"" sets.getStartTime() "\",\"endTime\":\"" sets.getEndTime() "\",\"menshu\":\"" sets.getMenshu() "\",\"isReadDB\":\"" sets.getIsReadDB() "\"}";System.out.println(changes);String absPath = request.getRealPath("\\");String filePath = absPath "public\\sets\\electSets.json";if(businessService.ChangeElectSets(filePath, changes)){log.info("选课设置修改成功");request.setCharacterEncoding("UTF-8");response.setContentType("text/json;charset=utf-8");response.getWriter().write("{success: true}");} else {response.getWriter().write("{errors:'选课设置修改失败,请重新尝试!'}");}
}
文章本天成,妙手偶得之。采得百花成蜜后,为谁辛苦为谁甜。衣带渐宽终不悔,为伊消得人憔悴。静如处女,动如脱兔。盛名之下,其实难副。

自己的逻辑代码:

/*** 读取redis中的数据* @param path* @return*/public static List<JSONObject> readFile(String path){File file = new File(path);BufferedReader reader = null;String laststr = "";List<JSONObject> list = new ArrayList<>();try {//System.out.println("以行为单位读取文件内容,一次读一整行:");reader = new BufferedReader(new FileReader(file));String tempString = null;int line = 1;//一次读入一行,直到读入null为文件结束while ((tempString = reader.readLine()) != null) {//显示行号logger.info("import_redis_data"+line+":"+tempString);System.out.println("import_redis_data"+line+":"+tempString);try{JSONObject obj = JSONObject.parseObject(tempString);list.add(obj);}catch (Exception e){e.printStackTrace();System.out.println("error redis"+line+":"+tempString);}laststr = laststr + tempString;line ++;}reader.close();} catch (IOException e) {e.printStackTrace();//logger.info("ReadFile_Error",e);System.out.println("ReadFile_Error");} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}return list;}

servlet 一启动执行:

@PostConstructpublic void init(){try{logger.info("platform_init_start");String start = JedisUtil.getIcallRedis().get("robot_icall_import_start");String end = JedisUtil.getIcallRedis().get("robot_icall_import_end");//            String path = Thread.currentThread().getContextClassLoader().//                    getResource("/").getPath();String path = this.getClass().getClassLoader().getResource("/redis-icall.txt").getPath();//logger.info("redis-icall-path:"+path);System.out.println("redis-icall-path:"+path);List<JSONObject> list = new ArrayList<>();if(StringUtil.isNull(start) || StringUtil.isNull(end)){list = readFile(path);for(Object obj : list){JSONObject json = JSON.parseObject(JSON.toJSONString(obj));String key = json.getString("key");String value = json.getString("value");JedisUtil.getIcallRedis().set(key,value);}}
//                    logger.info("icall_redis_start:"+JedisUtil.getIcallRedis().get("robot_icall_import_start"));
//                    logger.info("icall_redis_end:"+JedisUtil.getIcallRedis().get("robot_icall_import_end"));System.out.println("icall_redis_start:"+JedisUtil.getIcallRedis().get("robot_icall_import_start"));System.out.println("icall_redis_end:"+JedisUtil.getIcallRedis().get("robot_icall_import_end"));}catch (Exception e){e.printStackTrace();//logger.info("icall导入redis数据错误",e);System.out.println("icall导入redis数据错误");}}

pom.xml 中加入 下面的东西,为了将配置文件编译打包进去。

<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include><include>**/*.txt</include></includes><filtering>true</filtering></resource></resources>

redis文件中的内容每行一个json串:类似以下格式

{'db':0,'key':'robot_icall_import_end','ttl':-1,'type':'string','value':'end'}

java读写json格式的文件方法详解.txt,并批量存储进redis相关推荐

  1. Java 读写json格式的文件方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.要解决这个问题首先要知道json格式是什么? JSON格式: 比如学生有学号,姓名,性别等. 用json表示则为: {&q ...

  2. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  3. C++ close()关闭文件方法详解

    <C++ open打开文件>一节中,详细介绍了文件流对象如何调用 open() 成员方法打开指定文件.相对应地,文件流对象还可以主动关闭先前打开的文件,即调用 close() 成员方法. ...

  4. python可以使用二维元组吗_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...

    怎么去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  5. python元组读取到列表_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  6. mysql 批量导入sql_MySQL高效导入多个.sql文件方法详解

    MySQL有多种方法导入多个.sql文件(里面是sql语句),常用的有两个命令:mysql和source. 但是这两个命令的导入效率差别很大,具体请看最后的比较. (还有sqlimport和LOAD ...

  7. java 方法体 out 参数_Java方法详解

    方法详解 1.方法的定义 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合,包含于类或对象中:在程序中被创建,在其它地方被引用 设计方法的原则:要遵守原子性,即一个 ...

  8. java 复合_Java复合语句的使用方法详解

    与 C 语言及其他语言相同, Java 语言的复合语句是以整个块区为单位的语句,所以又称为块语句.下面我们来看看有关复合语句的使用方法和实例. 复合语句由开括号"{"开始,闭括号& ...

  9. java+getactionmap_Struts2 使用OGNL遍历map方法详解

    一.Action中的代码:MapAction.java package com.zx.demo.action; import java.util.ArrayList; import java.util ...

最新文章

  1. 2022-2028年中国醋酸行业投资分析及前景预测报告
  2. Java Socket发送与接收HTTP消息简单实现
  3. 内存与存储之边界迎来变革
  4. 神经网络 | 网络优化-线性神经网络-delta学习规则-梯度下降法(线性神经网络-异或问题Python源代码)
  5. CH - 6201 走廊泼水节(最小生成树,水题)
  6. Kafka:那我走?这个新一代消息中间件,彻底火了!
  7. SAP Spartacus Header 区域的默认配置
  8. lumanager mysql密码_LuManager单独安装mysqli
  9. 2432功率计使用说明_Quarq功率计的安装、使用和维护
  10. 1.Echarts的坑:切换tab时,echart显示默认的100px
  11. opencv图像处理8-卷积
  12. JAVA超市综合管理信息区块链系统毕设论文
  13. 如何把Excel中表格复制粘贴到PPT中,并更改表格边框颜色
  14. 风流霸主姜小白-第1章 姜太公劳苦功高始建齐 周幽王荒淫无度葬西周
  15. 【BZOJ 1006】 [HNOI2008]神奇的国度
  16. 数据分析师的发展前景
  17. 蛋白相互作用数据库,STRING使用指南
  18. JavaScript 制作简易ATM机
  19. 电影TS、TC、SCR、R5/、BD、HD等版本是什么意思?
  20. js 图片上传传给后台的几种格式,formData,base64,file,blob流

热门文章

  1. java 获取星期_java中如何获取日期时间中的星期几?
  2. 求生之路:学术生涯的17条简单生存法则
  3. java web短信接口_Java调用WebService短信接口-Go语言中文社区
  4. 恒大法拉第汽车FF的Logo赏析
  5. 监视Oracle ASM磁盘组上的空间使用情况(空闲和已用)
  6. HDU 1005 第二次呜呜呜 除49啥的请别信
  7. C++系统学习:数组
  8. 生成返回PYTHON__生成器和普通函数的区别
  9. Spark Core快速入门系列(5) | RDD 中函数的传递
  10. 车速与档位匹配关系_车速与档位的关系汇总