Java中List或者HashMap对象-序列化和反序列化并附读写文件操作
来源:互联网 发布:mac可清除空间如何清除 编辑:程序博客网 时间:2024/05/16 17:52
关于常用的序列化工具可以看下文章 浅析若干Java序列化工具
闲言少叙,直接上代码。
Json格式的序列化和反序列化使用alibaba的Fastjson,Maven项目需要引用包
之后就可以直接写代码了
注意:Entity是类,可以自己定义。
下面的代码是文件操作的工具类
闲言少叙,直接上代码。
Json格式的序列化和反序列化使用alibaba的Fastjson,Maven项目需要引用包
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.25</version> </dependency>
之后就可以直接写代码了
List<Entity>list=new ArrayList<Entity>();String listString = JSON.toJSONString(list, true);readAndWriteJson.writeFile("D:\\ljx.txt", listString);String listString2=readAndWriteJson.readFile("D:\\ljx.txt");List<Entity> list2 = JSON.parseArray(listString2, Entity.class);
注意:Entity是类,可以自己定义。
下面的代码是文件操作的工具类
package *****;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;public class readAndWriteJson { /** * 将字符串写如文件 * * @param filePath 文件所在路径 * @param input 字符串 * @throws IOException 异常 */public static void writeFile(String filePath, String input) throws IOException {FileWriter fw = new FileWriter(filePath);PrintWriter out = new PrintWriter(fw);out.write(input);out.println();fw.close();out.close();} /** * 读取文本文件内容 * * @param filePath文件所在路径 * @return 文本内容 * @throws IOException 异常 */public static String readFile(String filePath) throws IOException {StringBuffer sb = new StringBuffer();readToBuffer(sb, filePath);return sb.toString();}/** * 将文本文件中的内容读入到buffer中 * * @param bufferbuffer * @param filePath文件路径 * @throws IOException异常 */public static void readToBuffer(StringBuffer buffer, String filePath) throws IOException {InputStream is = new FileInputStream(filePath);String line; // 用来保存每行读取的内容BufferedReader reader = new BufferedReader(new InputStreamReader(is));line = reader.readLine(); // 读取第一行while (line != null) { // 如果 line 为空说明读完了buffer.append(line); // 将读到的内容添加到 buffer 中buffer.append("\n"); // 添加换行符line = reader.readLine(); // 读取下一行}reader.close();is.close();}}
为了代码重用写下了类可以帮助序列化和反序列化链表或者HashMap
import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.TypeReference;public class JsonSerilizable {/* 将链表序列化为字符串存入json文件中 */public static String serilizableForList(Object objList, String OutfilePathName)throws IOException {String listString = JSON.toJSONString(objList, true);// (maps,CityEntity.class);readAndWriteJson.writeFile(OutfilePathName, listString);return listString;}/* 将json文件中的内容读取出来,反序列化为链表 */public static <T> List<T> deserilizableForListFromFile(String InputfilePathName, Class<T> clazz)throws IOException {String listString2 = readAndWriteJson.readFile(InputfilePathName);List<T> list2 = JSON.parseArray(listString2, clazz);return list2;}/* 将HashMap序列化为字符串存入json文件中 */public static String serilizableForMap(Object objMap, String OutfilePathName)throws IOException {String listString = JSON.toJSONString(objMap, true);// (maps,CityEntity.class);readAndWriteJson.writeFile(OutfilePathName, listString);return listString;}/* 将json文件中的内容读取出来,反序列化为HashMap */public static <T, K> HashMap<K, T> deserilizableForMapFromFile(String InputfilePathName,Class<T> clazz) throws IOException {String listString2 = readAndWriteJson.readFile(InputfilePathName);Map<K, T> map = JSON.parseObject(listString2, new TypeReference<Map<K, T>>() {});return (HashMap<K, T>) map;}//使用方法 注意Entity为随机定义,使用时用自己的类名替换下就可以用了/*String pathName = "src/test/java/com/...../resources/file.json";List<Entity> entityList = new ArrayList<Entity>();JsonSerilizable.serilizableForList(entityList, pathName);List<Entity> entityList2 = JsonSerilizable.deserilizableForListFromFile(pathName, Entity.class);HashMap<Integer, Entity> Map = new HashMap<Integer, Entity>();JsonSerilizable.serilizableForMap(Map, pathName);HashMap<Integer, Entity> Map2 = JsonSerilizable.deserilizableForMapFromFile(pathName, Entity.class);*/}
0 0
- Java中List或者HashMap对象-序列化和反序列化并附读写文件操作
- 将java的对象序列化成文件,并从文件中反序列化。
- java对象序列化和反序列化操作记录
- Redis缓存Object,List对象 - Java 对象和List的序列化和反序列化
- Java中对象的序列化和反序列化
- c#中list对象的序列化和反序列化
- Java对象序列化与反序列化操作
- java 对象序列化和对象反序列化操作时的版本兼容性问题
- IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)
- java中序列化与反序列化对象的简单操作!
- Java中对象序列化与反序列化
- Java中对象序列化与反序列化
- java中对象的序列化与反序列化
- Java中对象的序列化与反序列化
- Java中对象的序列化与反序列化
- java执行序列化和反序列化操作实现对象的clone
- XStream java对象和json文件进行序列化和反序列化
- java对象的序列化和反序列化
- Unity GUI的使用2
- LeetCode算法题目:Evaluate Reverse Polish Notation
- android--toolbar和侧滑结合的简单实现
- mybatis_02
- Unity3D引擎之渲染技术系列六
- Java中List或者HashMap对象-序列化和反序列化并附读写文件操作
- 闭包作用域
- 结对编程 软件工程
- iptables 日志拦截
- IIS中ftp的部署+防火墙(一)
- HOG:从理论到OpenCV实践
- 虚拟继承解决菱形继承带来的二义性问题的过程详析
- IntelliJ创建Spring-boot项目
- [ios]ios画线 使用CGContextRef,CGPath和UIBezierPath来绘画