C#对象序列化和反序列化

C#对象序列化和反序列化,如下代码示例:


  1. using System; 
  2. using System.Text; 
  3. using System.Collections.Generic; 
  4. using System.IO; 
  5. using System.Runtime.Serialization.Formatters.Binary; 
  6.  
  7. class SerializableOperate 
  8.     private static void ObjectSerializable(object obj, string filePath) 
  9.     { 
  10.         FileStream fs = null; 
  11.         try 
  12.         { 
  13.             fs = new FileStream(filePath, FileMode.Create); 
  14.             BinaryFormatter bf = new BinaryFormatter(); 
  15.             bf.Serialize(fs, obj); 
  16.         } 
  17.         catch (IOException ex) 
  18.         { 
  19.             Console.WriteLine("序列化是出错!"); 
  20.         } 
  21.         finally 
  22.         { 
  23.             if (fs != null) 
  24.             { 
  25.                 fs.Close(); 
  26.             } 
  27.         } 
  28.     } 
  29.     private static object ObjectUnSerializable(string filePath) 
  30.     { 
  31.         FileStream fs = null; 
  32.         object obj = null; 
  33.         try 
  34.         { 
  35.             fs = new FileStream(filePath, FileMode.OpenOrCreate); 
  36.             BinaryFormatter bf = new BinaryFormatter(); 
  37.             obj = bf.Deserialize(fs); 
  38.         } 
  39.         catch (IOException ex) 
  40.         { 
  41.             Console.WriteLine("反序列化时出错!"); 
  42.         } 
  43.         finally 
  44.         { 
  45.             if (fs != null) 
  46.             { 
  47.                 fs.Close(); 
  48.             } 
  49.         } 
  50.         return obj; 
  51.     } 
  52.  
  53.     static void Main(String[] args) 
  54.     { 
  55.         List<string> list = new List<string>{ 
  56.         "张三","李四","王五","赵柳","刘备" 
  57.        }; 
  58.         string filePath = "c:\\log.log"; 
  59.         Console.WriteLine("开始序列化集合!请稍等..."); 
  60.         SerializableOperate.ObjectSerializable(list, filePath); 
  61.         Console.WriteLine("开始反序列化集合!请稍等..."); 
  62.         list = (List<String>)SerializableOperate.ObjectUnSerializable(filePath); 
  63.         foreach (string str in list) 
  64.         { 
  65.             Console.WriteLine(str); 
  66.         } 
  67.     } 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索using
, system
, filestream
, filepath
, console
, WriteLine
C#序列化
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-12-09 01:44:23

C#对象序列化和反序列化的相关文章

Java中对象序列化与反序列化详解_java

本文实例讲述了Java中对象序列化与反序列化.分享给大家供大家参考.具体如下: 一.简介 对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程. 序列化一般用于以下场景: 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.通过序列化对象在网络中传递对象: 3.通过序列化在进程间传递对象. 对象所属的类必须实现Serializable或是Externalizable接口才能被序列化.对实现了Serializable接口的类,其序列化

详解Java中对象序列化与反序列化_java

        序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等.在网络传输过程中,可以是字节或是XML等格式.而字节的或XML编码格式可以还原完全相等的对象.这个相反的过程又称为反序列化.Java对象的序列化与反序列化 在Java中,我们可以通过多种方式来创建对象,并且只要对象没有被回收我们都可以复用该对象.但是,我们创建出来的这些Java对象都是存在于JVM的堆内存中的.只有JVM处于运行状态

[Java开发之路](9)对象序列化与反序列化

1. 对象序列化 当你创建对象时,只要你需要,它会一直存在,但是程序终止时,无论何时它都不会继续存在.尽管这样做是非常有意义的,但是在某些情况下,如果程序不运行时扔能存在并且保存其信息,那将对我们非常有用.这样,在下次程序运行时,该对象将被重建并且拥有的信息与程序上次运行时它所拥有的信息相同.当然,我们也可以通过将信息写入文件或者数据库,但是如果能将一个对象声明为是"持久性"的,并为我们处理掉所有的细节,这将会显得十分方便. Java的序列化是将那些实现了Serializable接口的

Python pickle类库介绍(对象序列化和反序列化)_python

一.pickle pickle模块用来实现python对象的序列化和反序列化.通常地pickle将python对象序列化为二进制流或文件.   python对象与文件之间的序列化和反序列化: 复制代码 代码如下: pickle.dump() pickle.load() 如果要实现python对象和字符串间的序列化和反序列化,则使用: 复制代码 代码如下: pickle.dumps() pickle.loads()   可以被序列化的类型有: * None,True 和 False; * 整数,浮

java笔记九:对象序列化与反序列化

在java程序运行过程中,有许多的对象同时存在,但是程序结束运行或者JVM停止运行时这些对象都会消失.如何将这些对象保存起来以便下一次 再将这些对象读入内存呢?或者如何将某些对象通过网络传到另一端的java程序?实施对象的这种操作叫做对象的序列化(或者叫做持久化),重新读入内存叫 做反序列化. 基本数据类型的包装类和所有容器类都可以被序列化.用户自定义的类默认是不可以被序列化的.如果想要自己定义的类可以序列化就必须让这个类实现java.io.Serializable接口. 下面看一个Demo:

java对象序列化与反序列化的默认格式和json格式使用示例_java

默认格式 复制代码 代码如下: public class MyClass implements Serializable{...} 序列化: 复制代码 代码如下: ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(outputPath)); output.writeObject(myObject); 反序列化: 复制代码 代码如下: ObjectInputStream input = new Objec

对象的序列化与反序列化,以xml,二进制流的方式,soap方式序列化对象

  System.Runtime.Serialization.Formatters.Soap 命名空间包含SoapFormatter 类,该类用于以SOAP 格式将对象序列化和反序列化.生成使用此命名空间中的类型的应用程序时,必须引用System.Runtime.Serialization.Formatters.Soap.dll 程序集.   using System;using System.Drawing;using System.Collections;using System.Windo

对象-序列化和反射的问题?反序列化的一方怎么得到相应的类型信息

问题描述 序列化和反射的问题?反序列化的一方怎么得到相应的类型信息 一直以来,有一个问题困扰我很久了.经常会看到:一个对象序列化,然后反序列化就可以使用了.但是反序列化的一方怎么得到相应的类型信息?在序列化的时候相应的类型信息也会被序列化吗?还是反序列化的一方必须要有相应的类型信息才能反序列化? 解决方案 事实上在进行序列化和反序列化的时候,并不关心这个对象究竟是什么类,一般可以使用对象流,ObjectInputStream和ObjectOutputStream,实现对象序列化和反序列化,返回的

java 对象的序列化和反序列化详细介绍_java

     最近周末,对java 的基础知识做了一个整理,其中java 序列化和反序列化的资料进行了详细整理,这里做个笔记,希望也能帮助到读到此文的朋友. 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如