-3

是否有任何指南将数据从C # 应用程序保存到其自己的外部项目文件,例如嵌入图像等,以便稍后加载?谢谢。

4

3 回答 3

1

您可以在 .NET 程序集中嵌入几乎任何类型的数据并从中读取,但您不能修改自己的可执行文件,即使可以,那也是个坏主意。一方面,想想一个防病毒程序在运行时看到一个 EXE 突然变化是多么令人毛骨悚然。

如果您有需要读写的元数据(图像或任何其他类型的文件)只需使用文件系统。该类Environment的函数将返回众所周知的每个应用程序和每个用户的位置,您可以在其中存储任何您想要的东西。

编辑

我不确定这是否是你要问的,但它就是这样。假设您有一个名为的类Document,其中包含一些文本和一些图像,它们以某种未指定的方式呈现。所以基本上它看起来像这样:

[Serializable]
class Document
{
    public string Text { get; set; }
    public Image[] Images { get; set; }
}

不知道是什么Image,我只是编的。使用 .NET 序列化函数,您可以将其转换为字节流:

Document doc = GetDocumentFromUI();

MemoryStream stm = new MemoryStream(1024);
BinaryFormatter fmt = new BinaryFormatter();
fmt.Serialize(stm, doc);
byte[] data = stm.ToArray();

然后您可以将其保存到文件中。然后您可以加载文件并将其转换为文档:

byte[] data = LoadDocumentFromDisk();

BinaryFormatter fmt = new BinaryFormatter();
MemoryStream stm = new MemoryStream(data);
stm.Position = 0;
Document doc = fmt.Deserialize(stm) as Document;

这显然很粗糙,但是您可以序列化和反序列化 .NET 中的大多数对象,包括一些内置类型。

于 2012-08-21T20:36:13.697 回答
0

不可能做你想做的事。您只能读取嵌入式资源,不能修改它们。

于 2012-08-21T20:33:17.263 回答
0

只需序列化您要保存的数据并在加载时对其进行反序列化。如果您想编写更具体的数据,则必须确定自己的文件格式。

于 2012-08-21T21:27:33.907 回答