将内容保存到文件中,然后将其读回并显示

Posted

技术标签:

【中文标题】将内容保存到文件中,然后将其读回并显示【英文标题】:Saving the contents to a file and then reading it back and displaying it 【发布时间】:2014-01-23 10:28:58 【问题描述】:

我有一些细节是 Canvas 上的图像、文本框中的 XAML 和列表框中的项目。无论扩展名如何,如何将所有这些内容保存在一个文件中。我还应该能够打开这些文件并将所有内容放回它们的位置,即 Canvas 中的图像、文本框中的 XAML 和列表框中的项目。我尝试将详细信息保存在 String 中并保存,但我无法再次打开并放回内容。

我用来保存内容的代码是:

String Data = imagesource + xamldata + xamldesign + listboxitems;
try

    System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileDialog.FileName);
    file.WriteLine(Data);
    file.Close();

这里的 imagesource 是获取图像的来源。 xamldata 来自文本框,listboxitems 包含列表框中的项目列表。

【问题讨论】:

【参考方案1】:

不,不。 这里的事情有点复杂。您应该理解并接受一种称为“序列化”的新范例——列表中的所有这些东西:图像、文本、列表框中的项目具有不同的性质和目的,它们可以很容易地存储在同一个文件中,但应该是: 1. 尊贵的 2. 适当处理 - 即您将图像作为一系列字节,将其放在文件中的某个位置(由长度或数据结构本身定义),然后在加载时将其从文件中取回,重新创建图像,将其放在画布,文本和元素也是如此。

计算机只是无法读懂你的想法并理解哪些字节去了哪里。您可以“教”它如何正确处理您存储的部分信息。通常会创建这样的任务类,例如:

 public class StoreClass 
   public byte[] Image get;set;
   public string Text get;set;
   public List<MyListItem> ListContent get;set;
 

//here goes MyListItem definition
public class MyListItem ....

然后在需要时填充此类并将其序列化到磁盘上,然后从磁盘加载它(过程称为“去序列化”)并将其内容放置在正确的位置。

您可以阅读更多here

【讨论】:

以上是关于将内容保存到文件中,然后将其读回并显示的主要内容,如果未能解决你的问题,请参考以下文章

将groovy映射序列化为带引号的字符串

将文件压缩到内存并以字节python的形式读取整个存档

如何将 OrderedDicts 写入文件并将其读回列表?

将 PCM 录制的数据写入 .wav 文件(java android)

WPF:在 Documents 文件夹中保存和读取 Json 文件

从 QTableView 读取和写入文件