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 ...
随机推荐
- 【BBS】BBS论坛项目各个页面的工作流程图
1论坛整体结构 2数据库结构 3登录页面 4论坛首页(显示各个板块) 5显示板块对应的内容 6文章内容页 7新增板块.发表文章.回复 8版面管理.用户管理.发帖排行
- max函数
无论是几维,都只返回一个最大的值 >>> a = [1,2,3] >>> np.max(a) 3 >>> a = [[2,1],[3,4]] &g ...
- cenos 安装hadoop
1 创建hadoop用户 2 下载jdk和hadoop安装包 3 在root用户下解压jdk到/usr/java 4 配置JAVA_HOME 编辑/etc/profile,在文件最后添加 # set ...
- PAT——1047. 编程团体赛
编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: 输入第一行给出一个正 ...
- HDU 2076 夹角有多大
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2076 夹角有多大(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java ...
- spring boot 配置Rabbit
单独安装Rabbit服务并设置启动,可以通过浏览器访问,一般访问地址是http://localhost:15672/ ,用户名密码看配置文件的用户名密码 1 实例化配置类注解 import org.s ...
- 【腾讯敏捷转型No.5】需求没做完可以发布嘛
很多人对于敏捷的第一直觉就是“快”,开发快,测试快,发布快,并不知道如何把这个“快”应用到敏捷实践中,下面我们来分析一下导致工作效率低的核心原因.没有使用敏捷之前,在大多数情况下,项目管理都需要开各种 ...
- Ubuntu16.04测网速
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0b4.tar.xz tar -xvJf Python-3.7.0b4.tar.xz c ...
- eclipse中svn插件装好后出现"位置错误"的处理
错误现象: 验证位置时发生错误:"org.apache.subversion.javahl.ClientException:svn:E210004: Number is larger tha ...
- sizeof 用于返回一个对象或者类型所占据的内存数
整数类型 sizeof(int); 4字节or8字节 函数 sizeof(函数); 函数返回值类型占据的字节数 字符数组 char c[] = "abc"; sizeof(c); ...