如何使用 C# 将 System.Byte 转换为 System.io.stream 对象

在本文中,我们将通过如何使用 C# 控制台应用程序将字节转换为流。在此示例中,首先,我们使用 File.ReadAllBytes 方法从文件中读取所有字节。然后使用 MemoryStream 我们将所有字节添加到内存流中。为了逐个读取字节,我们使用 BinaryReader 和 for 循环。使用 C# 将字节转换为内存流或流还有另一种选择。
让我们开始编码。

方法一

从文件中读取所有字节,然后将其转换为 MemoryStream 并再次转换为 BinaryReader 以读取数组的每个字节。

byte[] file = File.ReadAllBytes("{FilePath}");  
  
using (MemoryStream memory = new MemoryStream(file))  
{  
    using (BinaryReader reader = new BinaryReader(memory))  
    {  
        for (int i = 0; i < file.Length; i++)  
        {  
            byte result = reader.ReadByte();  
            Console.WriteLine(result);  
        }  
    }  
}  

方法二

从文件中读取所有字节并将其转换为 Stream:

byte[] file = File.ReadAllBytes("{FilePath}");  
  
Stream stream = new MemoryStream(file);  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用以下代码判断以rar、zip、7z为扩展名的压缩文件是否损坏: ```csharp using System; using System.IO; namespace ConsoleApp { class Program { static void Main(string[] args) { string filePath = "example.rar"; // 压缩文件路径 string extension = Path.GetExtension(filePath)?.ToLower(); // 获取文件扩展名并转换为小写 bool isCorrupted = false; // 是否损坏 switch (extension) { case ".rar": isCorrupted = IsRarCorrupted(filePath); break; case ".zip": isCorrupted = IsZipCorrupted(filePath); break; case ".7z": isCorrupted = Is7zCorrupted(filePath); break; default: Console.WriteLine("不支持的文件格式"); break; } if (isCorrupted) { Console.WriteLine("文件损坏"); } else { Console.WriteLine("文件正常"); } Console.ReadKey(); } // 判断rar文件是否损坏 static bool IsRarCorrupted(string filePath) { using (var stream = new FileStream(filePath, FileMode.Open)) { var header = new byte[7]; while (stream.Read(header, 0, 7) > 0) { if (header[0] == 0x52 && header[1] == 0x61 && header[2] == 0x72 && header[3] == 0x21 && header[4] == 0x1a && header[5] == 0x07 && (header[6] == 0x00 || header[6] == 0x01)) { return false; } else { var size = BitConverter.ToInt16(header, 5); stream.Seek(size, SeekOrigin.Current); } } } return true; } // 判断zip文件是否损坏 static bool IsZipCorrupted(string filePath) { using (var stream = new FileStream(filePath, FileMode.Open)) { var buffer = new byte[22]; if (stream.Read(buffer, 0, 22) < 22) { return true; } if (BitConverter.ToUInt32(buffer, 0) != 0x04034b50) { return true; } var fileNameLength = BitConverter.ToUInt16(buffer, 26); var extraFieldLength = BitConverter.ToUInt16(buffer, 28); stream.Seek(fileNameLength + extraFieldLength, SeekOrigin.Current); return false; } } // 判断7z文件是否损坏 static bool Is7zCorrupted(string filePath) { using (var stream = new FileStream(filePath, FileMode.Open)) { var buffer = new byte[6]; if (stream.Read(buffer, 0, 6) < 6) { return true; } var signature = BitConverter.ToUInt64(buffer, 0); if (signature != 0x377abcaf271c) { return true; } var headerSize = BitConverter.ToUInt16(buffer, 4); stream.Seek(headerSize, SeekOrigin.Current); return false; } } } } ``` 注意:以上代码只能判断是否损坏,无法确定文件是否能够正常解压缩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cool2Feel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值