C# 从内存流复制到文件流失败

C# 从内存流复制到文件流失败,c#,filestream,memorystream,C#,Filestream,Memorystream,我正在尝试将内存流复制到文件流。我注意到输出exe在解密时已损坏。我确信解密函数没有问题。这是密码 private MemoryStream My_Encrypt(Stream inputFile) { //FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create); MemoryStream fsCrypt = new MemoryStream

我正在尝试将内存流复制到文件流。我注意到输出exe在解密时已损坏。我确信解密函数没有问题。这是密码

 private MemoryStream My_Encrypt(Stream inputFile)
        {

                //FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);
                MemoryStream fsCrypt = new MemoryStream();

                RijndaelManaged RMCrypto = new RijndaelManaged();

                CryptoStream cs = new CryptoStream(fsCrypt, RMCrypto.CreateEncryptor(key, key), CryptoStreamMode.Write);

                int data;
                while ((data = inputFile.ReadByte()) != -1)
                    cs.WriteByte((byte)data);

                inputFile.Flush();

                return fsCrypt;

        }


        MemoryStream ms = My_Encrypt(bundleStream);
        ms.Seek(0, SeekOrigin.Begin);

        FileStream atest = new FileStream("c:\\Somefile.exe",FileMode.Create);
        ms.Seek(0, SeekOrigin.Begin);
        ms.CopyTo(atest);

        atest.Close();
更多详细信息:
我之所以说memory stream方法不起作用,是因为在
My_Encrypt
方法中,如果我用FileStream而不是memory stream替换fsCrypt,并在方法末尾关闭fsCrypt,然后重新打开保存的文件并将其写入另一个有效文件中。我的问题是为什么内存流方法不起作用

我相信你必须调用加密流

private MemoryStream My_Encrypt(Stream inputFile)
{
    //FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);
    MemoryStream fsCrypt = new MemoryStream();

    RijndaelManaged RMCrypto = new RijndaelManaged();

    CryptoStream cs = new CryptoStream(fsCrypt, RMCrypto.CreateEncryptor(key, key), CryptoStreamMode.Write);

    int data;
    while ((data = inputFile.ReadByte()) != -1)
        cs.WriteByte((byte)data);

    cs.FlushFinalBlock();

    return fsCrypt;
}

为什么调用inputFile.Flush()?我想应该是cs.Flush()@Igor我读到
.close()
在关闭前调用Flush对不起,我问的是inputFile.Flush()我相信@arturomenchaa的意思是用
cs.Flush()
替换
,尝试在
cs
上刷新而不是刷新。