package com.nko.utils; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Properties; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import com.nko.bean.Keyword; import com.nko.bean.Parameter; public class DisposeFile { public static final String PREFIX = "index_"; static final String PRIPATH = "F:\\code workspace\\Wechat\\WebRoot\\Files\\"; // static final String PRIPATH = "C:\\Wechat\\WebRoot\\Files\\"; /** * 暂定方法 TODO: update * 读取消息储存的json文件中保存的消息 * @param fileName * @return */ public static Object readFile(String fileName) { System.out.println(fileName); // "message.json" File file = new File(PRIPATH + fileName + ".json"); BufferedReader reader = null; String lastStr = ""; try { reader = new BufferedReader(new FileReader(file)); String tempStr = null; int line = 1; while ((tempStr = reader.readLine()) != null) { // 一次读入一行,直到读入null为文件结束 lastStr += tempStr; lastStr += "\n"; //TODO: update line++; } reader.close(); } catch (IOException e) { e.printStackTrace(); } // System.out.println(lastStr); String[] jsonArr = lastStr.split("\n"); List list = null; switch(fileName) { case "message": case "others": list = new ArrayList<Parameter>(); for(String str : jsonArr) { String[] items = str.split("}]"); for(String s : items) { // System.out.println(s); String[] subItems = s.split("\","); list.add(getParam(subItems)); } } break; case "keywordAutoReply": for(String str : jsonArr) { String[] items = str.split("}]"); for(String s : items) { // System.out.println(s); String[] subItems = s.split("\","); list.add(getKeyword(subItems)); } } break; } System.out.println(lastStr); // 获得json文件的内容 JSONObject obj = JSONObject.fromObject(lastStr); // 格式化成 json对象 // Parameter param = new Parameter(); //// param.setContent(jo.getString("content")); // System.out.println(param.getContent()); return list; } /** * 暂定读取json文件方法中提出的赋值到List<Parameter>对象的方法 * @param jsonArr * @return */ static Parameter getParam(String[] strs) { Parameter param = new Parameter(); for(String str : strs) { System.out.println(str); String key = str.substring(str.indexOf("\"") + 1, str.indexOf("\":")); // System.out.println("==key" + key); String value = str.substring(str.indexOf(":\"") + 2, str.length()); // System.out.println(value); if(! key.equals("item")) { param = setParams(key, value); } else { System.out.println(key); List<Parameter> item = new ArrayList<Parameter>(); for (String subTmp : key.split(",")) { item.add(setParams(key, value)); param.setItem(item); } } } return param; } /** * 暂定读取json文件方法中提出的赋值到List<Keyword>对象的方法 * @param jsonArr * @return */ static Keyword getKeyword(String[] strs) { Keyword keyword = new Keyword(); for(String str : strs) { System.out.println(str); String key = str.substring(str.indexOf("\"") + 1, str.indexOf("\":")); String value = str.substring(str.indexOf(":\"") + 2, str.length()); if(key.equals("key")) { keyword.setKey(value); } else { keyword.setParam(getParam(str.split("]"))); } } return keyword; } /** * TODO: update * 暂定读取json文件方法中提出的赋值到Parameter对象的方法 * @param str * @return */ private static Parameter setParams(String key, String value) { Parameter param = new Parameter(); switch(key) { case "url": param.setUrl(value); break; case "time": param.setTime(value); break; case "event": param.setEvent(value); break; case "title": param.setTitle(value); break; case "picUrl": param.setPicUrl(value); break; case "content": param.setContent(value); break; case "msgType": param.setMsgType(value); break; case "category": param.setCategory(value); break; case "eventKey": param.setEventKey(value); break; case "funcFlag": param.setFuncFlag(value); break; case "toUserName": param.setToUserName(value); break; case "description": param.setDescription(value); break; case "fromUserName": param.setFromUserName(value); break; } return param; } /** * 读取配置文件 */ public static void readConfig() { Properties pro = new Properties(); String filePath = DisposeFile.class.getResource("/config.properties").getPath(); FileInputStream fin; try { fin = new FileInputStream(filePath); pro.load(fin); fin.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 获得指定文件的byte数组 * @param pathname * @return * @throws IOException */ public static byte[] file2Bytes(String pathname) throws IOException { byte[] buffer = null; if (pathname == null || pathname.equals("") || pathname == "") return null; File file = new File(pathname); if (file.exists()) { try { buffer = file2Bytes(file); } catch (IOException e) { e.printStackTrace(); } } return buffer; } /** * 获得指定文件的byte数组 * * @param file * @return * @throws IOException */ public static byte[] file2Bytes(File file) throws IOException { byte[] buffer = null; try { FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); byte[] b = new byte[1000]; int n; while ((n = fis.read(b)) != -1) { bos.write(b, 0, n); } fis.close(); bos.close(); buffer = bos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } return buffer; } /** * 生成文件并写入内容 * * @param file_name * @param bytes */ public static void WriteFile(String file_name, byte[] bytes) { if (bytes.length < 0) return; FileWriter fw = null; PrintWriter pw = null; File file = new File(file_name); try { fw = new FileWriter(file, true); pw = new PrintWriter(new BufferedWriter(fw)); pw.print(new String(bytes, "utf-8")); pw.close(); fw.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { fw.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 生成文件并写入内容 * * @param fileName * @param fileContent * @param encoding * eg:utf-8 */ public static void writeFile(String fileName, String fileContent, String encoding) { try { FileOutputStream fos = new FileOutputStream(fileName, true); OutputStreamWriter osw = new OutputStreamWriter(fos, encoding); osw.write(fileContent); osw.flush(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { List<Parameter> params = (List<Parameter>) readFile("message"); System.out.println(params.size()); System.out.println(params.get(0).getContent()); } }
最近下载更多
liu2022 LV14
2022年7月31日
dongzhan LV12
2021年12月16日
Tayirjan LV11
2021年12月1日
tcloud LV1
2021年10月30日
陈志远 LV1
2021年9月8日
seiseisizuka LV1
2021年8月5日
yuzhang LV2
2021年2月1日
wfqdxdx LV6
2020年5月21日
MrZive LV6
2020年5月6日
linghongjun5002 LV10
2020年4月15日
最近浏览更多
libo1212 LV8
6月17日
Luck_ZDM LV12
5月31日
Gin19960217 LV4
1月12日
jerryPang LV1
2023年6月28日
井晓码
2023年4月14日
暂无贡献等级
dengjunjun LV15
2023年1月11日
uni-code_0123 LV1
2022年11月3日
babyFF9 LV8
2022年9月26日
微信网友_6139616720490496 LV1
2022年9月19日
xiex909 LV27
2022年8月19日