我遇到问题,我的程序无法使用StreamReader读取输入流上的大多数字符。它只加载每个字符的前16b,如果字符是32b,它会删除剩余的16b(使它们全部为0)。
我需要操纵文件的内容(稍后加密和解密)。它适用于ASCII,UTF-8,UTF-7。
以下是加密和解密后所选图像和图像的示例:
已经尝试使用Encoding.Default
或设置编码&什么都行不通。
我写的代码正在使用英文的.txt文件正确工作,这不是问题。加载带StreamReader
加密的文件时出现问题,原因是dataloss。所选文件和结果文件大小相同,只是将某些数据置空。
答案 0 :(得分:2)
对于非文本文件,您应该使用BinaryReader和BinaryWriter。这将允许您直接读/写字节并避免将它们解释为文本(这是StreamReader将执行的操作)。
答案 1 :(得分:2)
StreamReader
尝试首先自动检测编码,如果不能,则会使用用户提供的编码。在致电您的第一个Read
后,您可以访问CurrentEncoding
上的StreamReader
媒体资源,看看它是否已更改。看看这是不是正在发生的事情会很有趣。
此外,您的标题表示您正在复制jpg文件内容,但在您的问题中,您说您正在复制文本文件。我想知道你在做什么,因为StreamReader
仅用于文本文件。您可以使用BinaryReader
,但我想我会在这种情况下使用Stream
。 StreamReader
用于特定编码中的字符输入,而Stream
类用于字节输入和输出。