我正在序列化一个结构到MemoryStream,我想保存和加载序列化结构。
那么,如何保存一个MemoryStream到一个文件,也从文件加载回来?
我正在序列化一个结构到MemoryStream,我想保存和加载序列化结构。
那么,如何保存一个MemoryStream到一个文件,也从文件加载回来?
当前回答
写入文件的组合答案可以是;
MemoryStream ms = new MemoryStream();
FileStream file = new FileStream("file.bin", FileMode.Create, FileAccess.Write);
ms.WriteTo(file);
file.Close();
ms.Close();
其他回答
对于加载文件,我更喜欢这个
MemoryStream ms = new MemoryStream();
using (FileStream fs = File.OpenRead(file))
{
fs.CopyTo(ms);
}
对于那些想要简短版本的人来说:
var memoryStream = new MemoryStream(File.ReadAllBytes("1.dat"));
File.WriteAllBytes("1.dat", memoryStream.ToArray());
你可以使用MemoryStream。写到或流。CopyTo(在框架版本4.5.2,4.5.1,4.5,4中支持)将内存流的内容写入另一个流的方法。
memoryStream.WriteTo(fileStream);
更新:
fileStream.CopyTo(memoryStream);
memoryStream.CopyTo(fileStream);
写入文件的组合答案可以是;
MemoryStream ms = new MemoryStream();
FileStream file = new FileStream("file.bin", FileMode.Create, FileAccess.Write);
ms.WriteTo(file);
file.Close();
ms.Close();
保存到文件中
Car car = new Car();
car.Name = "Some fancy car";
MemoryStream stream = Serializer.SerializeToStream(car);
System.IO.File.WriteAllBytes(fileName, stream.ToArray());
从文件加载
using (var stream = new MemoryStream(System.IO.File.ReadAllBytes(fileName)))
{
Car car = (Car)Serializer.DeserializeFromStream(stream);
}
在哪里
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace Serialization
{
public class Serializer
{
public static MemoryStream SerializeToStream(object o)
{
MemoryStream stream = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, o);
return stream;
}
public static object DeserializeFromStream(MemoryStream stream)
{
IFormatter formatter = new BinaryFormatter();
stream.Seek(0, SeekOrigin.Begin);
object o = formatter.Deserialize(stream);
return o;
}
}
}
最初这个类的实现已经发布在这里
and
[Serializable]
public class Car
{
public string Name;
}