在C#中读取写入字节流与读取写入二进制数据, 有何差异?

在C#中,读取和写入字节流与读取和写入二进制数据有些许不同,尽管它们在某些情况下可能会重叠使用。以下是它们之间的主要区别:

  1. 读取和写入字节流:

    • 读取和写入字节流通常指的是处理文件或流中的原始字节数据。在C#中,可以使用 FileStream 类来读取和写入字节流。

    • 读取字节流意味着按字节顺序从文件或流中读取数据,而写入字节流意味着将字节数据按顺序写入文件或流。

    • 这种方法通常用于处理文件的原始字节数据,而不关心其编码或数据类型。

      cs 复制代码
      using System;
      using System.IO;
      
      class Program
      {
          static void Main()
          {
              // 读取字节流
              using (FileStream fs = new FileStream("input.txt", FileMode.Open))
              {
                  byte[] buffer = new byte[fs.Length];
                  int bytesRead = fs.Read(buffer, 0, buffer.Length);
                  Console.WriteLine($"Read {bytesRead} bytes from input.txt.");
              }
      
              // 写入字节流
              byte[] dataToWrite = { 65, 66, 67, 68, 69 }; // ASCII码:A, B, C, D, E
              using (FileStream fs = new FileStream("output.txt", FileMode.Create))
              {
                  fs.Write(dataToWrite, 0, dataToWrite.Length);
                  Console.WriteLine("Wrote data to output.txt.");
              }
          }
      }
  2. 读取和写入二进制数据:

    • 读取和写入二进制数据通常指的是按特定格式解析和处理数据,例如按照特定的数据结构来读取或写入数据。

    • 在C#中,可以使用 BinaryReaderBinaryWriter 类来读取和写入二进制数据。这些类提供了用于读取和写入基本数据类型(如整数、浮点数、字符串等)的方法。

    • 读取和写入二进制数据可以包含一些解析和转换过程,以便正确地处理数据格式。

      cs 复制代码
      using System;
      using System.IO;
      
      class Program
      {
          static void Main()
          {
              // 读取二进制数据
              using (BinaryReader reader = new BinaryReader(File.Open("input.bin", FileMode.Open)))
              {
                  int intValue = reader.ReadInt32();
                  float floatValue = reader.ReadSingle();
                  string stringValue = reader.ReadString();
      
                  Console.WriteLine($"Int value: {intValue}");
                  Console.WriteLine($"Float value: {floatValue}");
                  Console.WriteLine($"String value: {stringValue}");
              }
      
              // 写入二进制数据
              using (BinaryWriter writer = new BinaryWriter(File.Open("output.bin", FileMode.Create)))
              {
                  int intValue = 123;
                  float floatValue = 3.14f;
                  string stringValue = "Hello, world!";
      
                  writer.Write(intValue);
                  writer.Write(floatValue);
                  writer.Write(stringValue);
      
                  Console.WriteLine("Wrote binary data to output.bin.");
              }
          }
      }

总的来说,读取和写入字节流更加原始和低级,通常用于处理文件的原始字节数据,而读取和写入二进制数据更关注于按特定格式解析和处理数据。选择使用哪种方法取决于处理的数据类型和需求。

相关推荐
AI人工智能+电脑小能手19 小时前
【大白话说Java面试题】【Java基础篇】第24题:Java面向对象有哪些特征
java·开发语言·后端·面试
geovindu19 小时前
go: Strategy Pattern
开发语言·设计模式·golang·策略模式
276695829219 小时前
阿里最新acw_sc__v2 分析
开发语言·python·acw_sc__v2·acw_sc__v2逆向·acw_sc__v2算法·acw_sc__v2算法分析·cookie逆向
dog25019 小时前
圆锥曲线和二次曲线
开发语言·网络·人工智能·算法·php
AI人工智能+电脑小能手19 小时前
【大白话说Java面试题】【Java基础篇】第25题:JDK1.8的新特性有哪些
java·开发语言·后端·面试
开发小程序的之朴20 小时前
基于Go语言的企业级CMS系统架构设计与性能分析——以AnQiCMS为例
开发语言·golang·系统架构
叶小鸡20 小时前
Java 篇-项目实战-天机学堂(从0到1)-day9
java·开发语言
小短腿的代码世界20 小时前
Qt券商接口封装深度解析:统一API设计与多源适配
开发语言·qt·单元测试
wearegogog12320 小时前
基于Q-learning的栅格地图路径规划MATLAB仿真程序
开发语言·算法·matlab
csbysj202020 小时前
Java 条件语句
开发语言