c# - 对 streamwriter 和压缩如何工作的困惑

标签 c# .net

在开始之前,是否可以使用 streamwriter 编写包含混合内容的 .doc 文件?例如,我可能有一个包含图像和文本的 .doc 文件 - streamwriter 是否适合这个?我假设文本编写器用于编写纯文本文档。

我想做的是压缩一个文件(格式未知),这很容易。但我很困惑的是为什么我会称之为解压缩?这将使尺寸成为正常和更大的值,那么有什么意义呢?如果我想压缩一个文件并将其发送到网络驱动器,我应该压缩它,将它复制到网络位置,然后将其解压缩到一个新文件吗?这个应用程序将是一个 Windows 服务,所以我需要使用 Windows 模拟,对吗?

谢谢

最佳答案

我认为您对一般的压缩感到困惑。

您“压缩”任何数据以减小其大小。但是通过减小它的大小,数据的结构也必须改变。

因此,如果您将 MS Word 文档保存为 .doc 文件,您将在 .doc 文件中获得 MS Word 文档结构。

但是,如果您随后压缩 .doc 文件,压缩算法的魔力会使文件变小...但它将不再包含 MS Word 文档结构。

那么 MS Word 如何读取它获得的异类结构呢?不能!

这就是为什么你必须“解压缩”,以恢复压缩之前数据的任何结构,使其再次变得有用。

例如,假设您有一个句子“Woah .NET rocks”,某种压缩算法可能会用英语词典中的一页替换每个单词并生成字符串“77 69 84”。

Woah -> 77
.NET -> 69
rocks -> 84

那么您如何理解字符串“77 69 84”?

这当然没有意义!因为它已经被压缩了。

要再次理解它,您必须解压缩它,就像这样:

77 -> Woah
69 -> .NET
84 -> rocks

所以基本上,您是在获取“其他人”的数据结构并对其进行压缩。压缩后,数据对他们来说没有任何意义,因为它是压缩形式。因此,您必须“解压缩”它,以便“其他人”可以再次阅读它。”

我对你的问题的理解正确吗?

关于c# - 对 streamwriter 和压缩如何工作的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575610/

相关文章:

c# - 在字典的 linq 迭代过程中,什么可能导致堆栈溢出?

c# - 如何存储相关数据

c# - IntPtr 与 UIntPtr

c# - 使用 Npgsql 和 SSL 证书身份验证时出现 SSL 错误

c# - 无法将类型为 'System.Data.DataRowView' 的对象转换为类型 'System.IConvertible'

c# - Entity Framework 4.2,无法设置标识插入

c# - 如果对象元素根标记不存在,如何将 XML 反序列化为对象?

c# - 有没有办法在 .NET 中唯一标识连接到 Windows PC 的任何存储介质?

c# - 自定义接口(interface)实现和接口(interface)c#

c# - 将对象反序列化为自身