在开始之前,是否可以使用编写器编写带有混合内容的.doc文件?例如,我可能有一个带有图像和文本的.doc文件 - 是否适合使用该编写器?我假设一个文本编写者是为了写一个纯文本文件。
我要做的是压缩文件(格式未知),这很容易。但令我困惑的是为什么我会称之为解压缩?这将使尺寸正常且值更大,那么重点是什么?如果我想压缩文件并将其发送到网络驱动器,我应该压缩它,将其复制到网络位置,并将其解压缩到新文件?这个应用程序将是一个Windows服务,所以我需要使用Windows模拟,对吧?
由于
答案 0 :(得分:3)
我认为你对压缩感到困惑。
您“压缩”任何数据以减小其大小。但是通过减小它的大小,数据的结构也必须改变。
因此,如果您将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
所以基本上,你正在采用“其他人”的数据结构并压缩它们。在压缩之后,数据对它们没有明显的意义,因为它是压缩形式的。因此,你必须“解压缩”它,以便“其他人”可以再次阅读它。“
我正确理解你的问题?
答案 1 :(得分:1)
Word .doc
文件具有非常特定的二进制格式;我不确定StreamWriter
是否可以轻松编写一个......
重新压缩...您可以使用GZipStream
等内容压缩流数据,但这通常用于传输目的;收件人还需要理解解压缩它(例如,TCP客户端/服务器可能同意使用压缩)。使用文件,假设您希望它在另一端“原始”,您需要另一端的服务来解压缩它。
就个人而言,对于本地网络的使用,我不确定它是否值得,除非您正在转移大量数据 - 只需使用robocopy
并使用快速网络。
对于互联网使用,大多数协议都内置了压缩支持。带有gzip / deflate的Http是最明显的。
当然,如果你在谈论归档,那么将文件存储在像.zip档案这样的东西中很有意义......当“整体”这样做时,我倾向于在最接近服务器的服务器上运行归档工具。物理磁盘,以最大化IO性能。
答案 2 :(得分:0)
首先,我做了上述帖子,但不是在家时,所以我使用了未注册的帐户。
你已经回答了我的困惑。我实际上知道当你压缩数据时,要再次理解它,你可以解压缩它(比如.zips)。
关于.NET中的压缩问题,当我解压缩数据时,大小值大于原始大小。我有以下代码:
MemoryStream ms = new MemoryStream();
// Use the newly created memory stream for the compressed data.
DeflateStream compressedzipStream = new DeflateStream(ms, CompressionMode.Compress, true);
Console.WriteLine("Compression");
compressedzipStream.Write(buffer, 0, buffer.Length);
// Close the stream.
compressedzipStream.Close();
Console.WriteLine("Original size: {0}, Compressed size: {1}", buffer.Length, ms.Length);
在最后一行(Console.Writeline),我有以下数据:
原稿尺寸:9708,压缩尺寸:13943。压缩尺寸不应该更小吗?我正在使用.jgp文件。
由于
答案 3 :(得分:0)
并非所有数据都是可压缩的。例如,如果您尝试压缩已经压缩的文件(如在jpeg中),则很可能会获得大小。