Модуль записи XML и поток памяти С#

Я создаю файл с помощью XmlWriter, XmlWriter writer = XmlWriter.Create(fileName); он создает файл, а затем у меня есть еще одна функция, которую я вызываю private void EncryptFile(string inputFile, string outputFile), которая принимает 2 строки ввода и вывода, и в конце у меня есть два файла: один зашифрован, а другой нет. Мне просто нужен один зашифрованный файл, но для моей функции шифрования требуется входной файл, созданный XmlWriter. Есть ли способ создать поток памяти и передать его в мою функцию вместо создания входного файла. моя функция шифрования

private void EncryptFile (string inputFile, string outputFile)
            string password = @"fdds"; // Your Key Here
            UnicodeEncoding UE = new UnicodeEncoding();

            byte[] key = UE.GetBytes(password);
            string cryptFile = outputFile;
            FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);

            RijndaelManaged RMCrypto = new RijndaelManaged();


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

            FileStream fsIn = new FileStream(inputFile, FileMode.Open);

            int data;
            while ((data = fsIn.ReadByte()) != -1)
                cs.WriteByte((byte)data);
            cs.FlushFinalBlock();
            fsIn.Close();
            cs.Close();
            fsCrypt.Close();
        }
    }      

person SoftwareDeveloper    schedule 11.10.2012    source источник


Ответы (1)


Вы можете создать XmlWriter, который записывает в поток памяти:

var stream = new MemoryStream();
var writer = XmlWriter.Create(stream);

Теперь вы можете передать этот поток вашей функции EncryptFile вместо функции inputFile. Вы должны убедиться, что не забыли эти две вещи, прежде чем читать поток:

  1. Позвоните writer.Flush(), когда закончите писать.
  2. Установите stream.Position обратно на 0, прежде чем начать читать поток.
person Elian Ebbing    schedule 11.10.2012
comment
Writer.Flush() — это то, чего мне не хватало. Спасибо. - person granadaCoder; 11.02.2015