C# 如何从字节数组创建文件并将其作为文件发送到流,而不在磁盘上创建此文件?

C# 如何从字节数组创建文件并将其作为文件发送到流,而不在磁盘上创建此文件?,c#,C#,是否可以从字节数组创建文件并将其作为文件直接发送到流,而不在磁盘上创建此文件?有一个类将byteArray作为参数。你不需要写一个文件 Stream stream = new MemoryStream(byteArray); 或者,您可以访问现有的内存流: memStream.Write(byteArray, 0 , byteArray.Length); 你的问题不是很清楚。您要求“创建一个文件”,但您却说“不在磁盘上创建此文件”。但是,可以“从字节数组创建文件”: 其中path是要创建的文

是否可以从字节数组创建文件并将其作为文件直接发送到流,而不在磁盘上创建此文件?

有一个类将byteArray作为参数。你不需要写一个文件

Stream stream = new MemoryStream(byteArray);
或者,您可以访问现有的
内存流

memStream.Write(byteArray, 0 , byteArray.Length);

你的问题不是很清楚。您要求“创建一个文件”,但您却说“不在磁盘上创建此文件”。但是,可以“从字节数组创建文件”:

其中path是要创建的文件名,bytes是要写入的byte[],这只是众多方法之一

或“发送到流而不在磁盘上创建文件”。ie:写入内存流:

var ms = new MemoryStream( bytes );
恐怕你的问题需要更具体地说明你想做什么

编辑:加密示例:

private static byte[] Crypt
  (byte[] data, byte[] key, byte[] iv, ICryptoTransform cryptor)
{
  MemoryStream m = new MemoryStream();
  using( Stream c = new CryptoStream(m, cryptor, CryptoStreamMode.Write ))
  {
    c.Write(data, 0, data.Length);
  }
  return m.ToArray();
}

public static byte[] Encrpyt(byte[] data, byte[] key, byte[] iv)
{
  using( Aes algorithm = Aes.Create())
  using( ICryptoTransform encryptor = algorithm.CreateEncryptor(key,iv))
  {
    return Crypt( data, key, iv, encryptor );
  }
}

您可以轻松地将字节数组发送到内存流“把它送到小溪里去,你是什么意思?它是否在asp.net应用程序的上下文中,并且您希望用户下载它?请编写完整的用例。您可以将字节写入流,然后下一步是什么?是否要将文件作为附件发送?我想将其作为文件保存在数据库中。根据我的理解和检查-流式传输文件比流式传输阵列快得多。如果我错了,请纠正我。你能解释一下吗?什么是作为附件发送的?谢谢。谢谢你的回复。我有一份档案。我正在将此文件发送到加密类。此加密类返回字节[]。我可以从这个阵列在磁盘c:\temp\test.file上创建这个加密文件,然后将它作为文件流传输到我想要的任何地方。但是我不想在磁盘上创建这个test.file,因为如果我想加密1MB,我需要2MB的磁盘空间(我知道,我可以在流媒体传输后从temp中删除这个文件),但是如果我想加密10GB的文件,我需要在磁盘上临时的20GB的可用空间。这就是为什么我不想将其创建为磁盘上的文件。谢谢。我还是不明白你的意思,但还是添加了一个加密示例。非常感谢你的示例!什么是你不理解的?我不理解的是你想做什么+为什么要加密文件会使它的大小增加一倍(BTW你的加密流也可以是来自压缩命名空间的流)。我可以用它来加密大文件吗?谢谢你的帮助。@ LoenidB,如果这个答案对你有帮助,请考虑接受它。
private static byte[] Crypt
  (byte[] data, byte[] key, byte[] iv, ICryptoTransform cryptor)
{
  MemoryStream m = new MemoryStream();
  using( Stream c = new CryptoStream(m, cryptor, CryptoStreamMode.Write ))
  {
    c.Write(data, 0, data.Length);
  }
  return m.ToArray();
}

public static byte[] Encrpyt(byte[] data, byte[] key, byte[] iv)
{
  using( Aes algorithm = Aes.Create())
  using( ICryptoTransform encryptor = algorithm.CreateEncryptor(key,iv))
  {
    return Crypt( data, key, iv, encryptor );
  }
}