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 ...
随机推荐
- Linux学习总结(十七)-shell 基础知识
一 先介绍几种常用字符: 1 * 匹配任意个任意字符2 ?匹配一个任意字符3 # 注释符号,符号后的语句不被执行4 \脱意字符,后面跟带含义字符时,照原字符输出5 []匹配包含在[]之中的任意一个字符 ...
- 【bbs】logout.php
字体大小通过js设定,并结合@media,可实现自适应. 图片自适应窗口 实现流水灯手机端不滚动,script嵌套 多余文字省略号显示 http://www.cnblogs.com/yujihang ...
- 【问题】 cookie 不保存特殊字符 解决办法
遇到的问题: 在做项目,用geolocation 获取经纬度,格式如(23.1133,113.2552) ,想保存到cookie中备用.但读取cookie出来之后发现逗号变成了 %2c. 找到的原因 ...
- PAT——1024. 科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...
- PAT——1022. D进制的A+B
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数. 输入格式: 输入在一行中依次给出3个整数A.B和D. 输出格式: 输出A+B的D ...
- 可视化编程中----cell的自适应高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ Joke ...
- SharePoint客户端对象模型—任务日历生成
1,憋了好几天在经理帮助下用Js根据任务列表,生成的个人任务日历. (1)需要用到的CSS样式 <style type="text/css"> th.ms-vh { c ...
- rman基础知识理解(一)
rman用于对数据库的备份和恢复. 他的命令主要分成两大类:独立命令和批处理命令: 独立命令只能在rman的提示符下执行,主要的命令有: CONNECT CONFIGURE CREATE CATALO ...
- javascript 异步操作,串形执行,并行执行
单线程模型 单线程模型指的是,JavaScript 只在一个线程上运行.也就是说,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待. 注意,JavaScript 只在一个线程上 ...
- 【PTA 天梯赛】L1-046 整除光棍(除法模拟)
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数整除.比如,111111就可以被13整除. 现在,你的程序 ...