从C#NET 3.5中的byte []保存文件

Iva*_*nov 17 c# compression zlib .net-3.5

我的TCP客户端在数据包中接收图像.图像使用zlib压缩.任务是解压缩图像并将其放在表单上.

我打算将压缩的图像保存在当前目录中,解压缩并在表单上加载解压缩的文件.

第一个问题是保存文件(压缩).zlib可以保存解压缩.

下面的代码加载压缩文件并在解压缩后保存.

    private void decompressFile(string inFile, string outFile)
    {
        System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);
        zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream);
        System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);          
        try
        {
            CopyStream(inFileStream, outZStream);
        }
        finally
        {
            outZStream.Close();
            outFileStream.Close();
            inFileStream.Close();
        }
    }

    public static void CopyStream(System.IO.Stream input, System.IO.Stream output)
    {
        byte[] buffer = new byte[2000];
        int len;
        while ((len = input.Read(buffer, 0, 2000)) > 0)
        {
            output.Write(buffer, 0, len);
        }
        output.Flush();
    }
Run Code Online (Sandbox Code Playgroud)

如何将byte []数组直接传递给该函数?我打算将其保存为压缩文件,然后使用压缩文件的位置调用该函数,但我不知道如何从byte []数组中保存文件,也不知道传递byte []数组的方法作为输入文件.

任何帮助将受到高度赞赏.

谢谢.

Chr*_*yer 78

使用static void System.IO.File.WriteAllBytes(string path,byte [] bytes)方法.

byte[] buffer = new byte[200];
File.WriteAllBytes(@"c:\data.dmp", buffer);
Run Code Online (Sandbox Code Playgroud)

  • 你忘了逃避你的角色;).参数应为@"c:\ data.dmp"或"c:\\ data.dmp" (3认同)
  • 哇.为什么不能一直那么容易?+1 (3认同)

Rob*_*Day 5

public static void SaveFile(this Byte[] fileBytes, string fileName)
{
    FileStream fileStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
    fileStream.Write(fileBytes, 0, fileBytes.Length);
    fileStream.Close();
}
Run Code Online (Sandbox Code Playgroud)