复制JPG文件内容StreamReader和StreamWriter时出现问题

时间:2011-06-03 14:01:45

标签: .net character-encoding io

我遇到问题,我的程序无法使用StreamReader读取输入流上的大多数字符。它只加载每个字符的前16b,如果字符是32b,它会删除剩余的16b(使它们全部为0)。

我需要操纵文件的内容(稍后加密和解密)。它适用于ASCII,UTF-8,UTF-7。

以下是加密和解密后所选图像和图像的示例: Before and After

已经尝试使用Encoding.Default或设置编码&什么都行不通。

我写的代码正在使用英文的.txt文件正确工作,这不是问题。加载带StreamReader加密的文件时出现问题,原因是dataloss。所选文件和结果文件大小相同,只是将某些数据置空。

2 个答案:

答案 0 :(得分:2)

对于非文本文件,您应该使用BinaryReaderBinaryWriter。这将允许您直接读/写字节并避免将它们解释为文本(这是StreamReader将执行的操作)。

答案 1 :(得分:2)

StreamReader尝试首先自动检测编码,如果不能,则会使用用户提供的编码。在致电您的第一个Read后,您可以访问CurrentEncoding上的StreamReader媒体资源,看看它是否已更改。看看这是不是正在发生的事情会很有趣。

此外,您的标题表示您正在复制jpg文件内容,但在您的问题中,您说您正在复制文本文件。我想知道你在做什么,因为StreamReader仅用于文本文件。您可以使用BinaryReader,但我想我会在这种情况下使用StreamStreamReader用于特定编码中的字符输入,而Stream类用于字节输入和输出。