DataTable保存与读取 stream
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
private void SaveToFile( byte [] value, string filePath) { System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.OpenOrCreate); fs.Write(value, 0, value.Length); fs.Flush(); fs.Close(); } private byte [] ConvertStreamToByteBuffer( string filePath) { System.IO.Stream theStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); int b1; System.IO.MemoryStream tempStream = new System.IO.MemoryStream(); while ((b1 = theStream.ReadByte()) != -1) { tempStream.WriteByte((( byte )b1)); } return tempStream.ToArray(); } public static byte [] GetsetBinary(DataTable dt) { byte [] bArrayResult = null ; //用于存放序列化后的数据 dt.RemotingFormat = SerializationFormat.Binary; //指定DataSet串行化格式是二进制 MemoryStream ms = new MemoryStream(); //定义内存流对象,用来存放DataSet序列化后的值 IFormatter IF = new BinaryFormatter(); //产生二进制序列化格式 IF.Serialize(ms, dt); //串行化到内存中 bArrayResult = ms.ToArray(); // 将DataSet转化成byte[] ms.Close(); ms.Dispose(); return bArrayResult; } public DataTable RetrieveDataSet( byte [] binaryData) { MemoryStream ms = new MemoryStream(binaryData); //创建内存流 IFormatter bf = new BinaryFormatter(); //产生二进制序列化格式 object obj = bf.Deserialize(ms); //反串行化到内存中 //类型检验 ms.Close(); if (obj is DataTable) { DataTable dataSetResult = (DataTable)obj; return dataSetResult; } else { return null ; } } public static byte [] GetBytesByImage(System.Drawing.Image image) { byte [] photo_byte = null ; using (MemoryStream ms = new MemoryStream()) { Bitmap bmp = new Bitmap(image); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); photo_byte = new byte [ms.Length]; ms.Position = 0; ms.Read(photo_byte, 0, Convert.ToInt32(ms.Length)); bmp.Dispose(); } return photo_byte; } //调用方法: DataTable dt = DbHelperSQL.Query(sql); DataTable newDt = dt.Clone(); newDt.Columns.Add( "photo" , System.Type.GetType( "System.Byte[]" )); foreach (DataRow dr in dt.Rows) { newDt.ImportRow(dr); System.Drawing.Image img = System.Drawing.Image.FromFile(StudentPhotoPath(dr[ "PhotoUrl" ].ToString())); img = FixedSize(img, 135, 180); newDt.Rows[newDt.Rows.Count - 1][ "photo" ] = GetBytesByImage(img); img.Dispose(); } byte [] tableByteArray = GetsetBinary(newDt); SaveToFile(tableByteArray, @"D:\hello.yzd" ); byte [] byteArray = ConvertStreamToByteBuffer( @"D:\hello.yzd" ); DataTable dt = RetrieveDataSet(byteArray); |
DataTable保存与读取 stream的更多相关文章
- iOS 保存、读取与应用状态
固化 对于大多数iOS应用,可以将其功能总结为:提供一套界面,帮助用户管理特定的数据.在这一过程中,不同类型的对象要各司其职:模型对象负责保存数据,视图对象负责显示数据,控制器对象负责在模型对象与视图 ...
- Protobuf for Python测试保存和读取文件
安装pip, setuptools, and wheel 如果已经从python.org,安装啦Python 2 >=2.7.9 or Python 3 >=3.4 ,那么就已经有啦pip ...
- [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象
由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...
- java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)
我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据.这对改善软件的人机可用性方面是很有用的.比如:数据库监控.日志工具,JDBMo ...
- 【转】基本数据持久性(一) 使用plist保存和读取数据
原文网址:http://www.it165.net/pro/html/201309/7170.html 想保存成绩.记录得分.保存账号密码等等?数据持久性可以做到这一点!这篇文章通过简单的程序,来分享 ...
- C# 保存和读取TreeView展开的状态
附件 http://files.cnblogs.com/xe2011/ReadAndSaveTreeViewState.rar 保存和读取TreeView展开的状态 节点{ImageIndex,Is ...
- tensorflow:保存与读取网络结构,参数
训练一个神经网络的目的是啥?不就是有朝一日让它有用武之地吗?可是,在别处使用训练好的网络,得先把网络的参数(就是那些variables)保存下来,怎么保存呢?其实,tensorflow已经给我们提供了 ...
- C# 结构体和List<T>类型数据转Json数据保存和读取
C# 结构体和List<T>类型数据转Json数据保存和读取 一.结构体转Json public struct FaceLibrary { public string face_name ...
- 10 Tensorflow模型保存与读取
我们的模型训练出来想给别人用,或者是我今天训练不完,明天想接着训练,怎么办?这就需要模型的保存与读取.看代码: import tensorflow as tf import numpy as np i ...
随机推荐
- map详讲<二>
查找元素: Map可以根据健来查找元素,提供方法find(key),如果是这个健对应的元素存在,则返回的是这个健的迭代器iterator,否则返回的是std::end(): 使用find()函数有点笨 ...
- OpenGL之位图的绘制和gluOrtho2D等函数详解
位图绘制 先来段代码吧: #include <iostream> #include <gl/glut.h> using namespace std; #pragma comme ...
- 【Javascript-基础-ecma6】ecma6学习笔记(持续更新)
makdown语法手册API String 新特性的方法 基本不支持IE浏览器 String.fromCodePoint(6特性) String.prototype.codePointAt(6特性) ...
- Java导包后在测试类中执行正确但在Servlet中执行错误报ClassNotFoundException或者ClassDefNotFoundException解决办法
将原来导的包remove from build path,并复制到Web-root下的lib目录中,再add to build path,
- 【转】:Oracle Linux6.9下安装Oracle 11.2.0.4.0及psu补丁升级
为方便截图,本文操作都在vmware虚拟机上完成. 目录: 1.操作系统安装 2.数据库安装 3.PSU补丁升级卸载 part1 操作系统安装 Oracle (Enterprise) Linux ...
- Java并发编程(三)什么是线程池
什么是线程池 学习编程的小伙伴们会经常听到“线程池”.“连接池”这类的词语,可是到底“池”是什么意思呢?我讲个故事大家就理解了:在很久很久以前有一家银行,一年之中只有一个客户来办理业务,随着时间的推移 ...
- My SQL常用操作汇总
写这篇随笔的目的是我发现了在上一篇关于My SQL的随笔中存在一些不严谨的代码问题,在这里再次简单的总结一下并加以改进,以代码为主. # !每行命令必须以分号(;)结尾 先通过命令行进入数据库客户端 ...
- Java面试题整理1
Java基础部分 JDK和JRE有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境.JRE:Java Runtime ...
- Ionic3环境搭建及创建
初次尝试Ionic,边学习边记录下来,以免以后忘记了,入坑向( ̄ω ̄;) 1.Ionic环境安装 Ionic开发是依赖于Nodejs环境的,所以在开发之前我们需要安装好Nodejs.下载安装:http ...
- Rabbitmq(一)
ClientA,ClientB: 为Producer,数据的发送方. Client1,Client2,Client3:为Consumer,数据的接收方. Exchange:消息交换 ...