流与对象序列化
来源:http://www.7dit.com 作者:7dit 发布日期:2008-09-21 01:33:58 点击量:495
流:stream 是一种传送二进制数据的通道
流的操作方式是:
1.建立流(通过对象/通过文件...)
2.使用流,流作为一种通过通常需要被第三方函数进行操作,流仅仅只是一种媒介。
3.关闭流。
两种流的使用:
//文件流
FileStream fs = new FileStrame("文件名及路径",FileMode枚举即文件的操作方式);
//流的使用......
fs.close();
//内存流
MemoryStream ms = new MemoryStream(byte[]通常为一个二进制数组的内存空间,即对象);
//流的使用...
ms.close();
当我们读取流时可以通过一些类的方法格式化这些二进制数据,如:
StreamReader r = new StreamReader(fs); 这时就可以对流进行格式化操作
Image.FromStream(fs); //可以返回图片,当然此处的流必需是一种图片格式的流
如果没有这些方法怎么暂时保存流的数据呢? 因为流就是二进制数据,所以理所当然可以用byte[]数组进行保存以供我们随时使用。
以上代码可以将任意文件通过流转换成二进制的数组,即流数据,通过该数组我们可以随时将它还原成流,流是数据传送的根本,SQL SERVER中也为流的二进制数据文件提供了IMAGE类型的保存。
序列化:
序列化简单点说就是将对象转换成二进制的流,并将流保存成文件,反序列化则进行复原的操作
命名空间: System.Runtime.Serialization.Formatters.Binary;
前提是Student必需指示为一个可序列化的类 [Serializable]
流的操作方式是:
1.建立流(通过对象/通过文件...)
2.使用流,流作为一种通过通常需要被第三方函数进行操作,流仅仅只是一种媒介。
3.关闭流。
两种流的使用:
//文件流
FileStream fs = new FileStrame("文件名及路径",FileMode枚举即文件的操作方式);
//流的使用......
fs.close();
//内存流
MemoryStream ms = new MemoryStream(byte[]通常为一个二进制数组的内存空间,即对象);
//流的使用...
ms.close();
当我们读取流时可以通过一些类的方法格式化这些二进制数据,如:
StreamReader r = new StreamReader(fs); 这时就可以对流进行格式化操作
Image.FromStream(fs); //可以返回图片,当然此处的流必需是一种图片格式的流
如果没有这些方法怎么暂时保存流的数据呢? 因为流就是二进制数据,所以理所当然可以用byte[]数组进行保存以供我们随时使用。
public byte[] getStream(string path)
{
FileStream fs = new FileStream(path, FileMode.Open);
byte[] b = new byte[fs.Length]; //定义流长度的数据
for (int i = 0; i < fs.Length; i++)
{
b[i] = (byte)fs.ReadByte();
}
return b;
}
{
FileStream fs = new FileStream(path, FileMode.Open);
byte[] b = new byte[fs.Length]; //定义流长度的数据
for (int i = 0; i < fs.Length; i++)
{
b[i] = (byte)fs.ReadByte();
}
return b;
}
以上代码可以将任意文件通过流转换成二进制的数组,即流数据,通过该数组我们可以随时将它还原成流,流是数据传送的根本,SQL SERVER中也为流的二进制数据文件提供了IMAGE类型的保存。
序列化:
序列化简单点说就是将对象转换成二进制的流,并将流保存成文件,反序列化则进行复原的操作
命名空间: System.Runtime.Serialization.Formatters.Binary;
private void writeSeriStu(Student stu)
{
FileStream fs = new FileStream("stu.save", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter(); //二进制格式化对象
bf.Serialize(fs, stu); //通过该方法将对象格式化成二进制的数据并通过流输出
fs.Close();
}
private void readSeriStu(ref Student stu)
{
FileStream fs = new FileStream("stu.save", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
stu = (Student)bf.Deserialize(fs); //将流还原成对象
fs.Close();
}
{
FileStream fs = new FileStream("stu.save", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter(); //二进制格式化对象
bf.Serialize(fs, stu); //通过该方法将对象格式化成二进制的数据并通过流输出
fs.Close();
}
private void readSeriStu(ref Student stu)
{
FileStream fs = new FileStream("stu.save", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
stu = (Student)bf.Deserialize(fs); //将流还原成对象
fs.Close();
}
前提是Student必需指示为一个可序列化的类 [Serializable]
Copyright © 2005 奇点中文网--7dit.com
闽ICP备05001292号
闽ICP备05001292号
