原 BinaryWriter和BinaryReader(二進制文件的讀寫)

原文?BinaryWriter和BinaryReader(二進制文件的讀寫)

C#的FileStream類提供了最原始的字節級上的文件讀寫功能,但我們習慣于對字符串操作,于是StreamWriter和 StreamReader類增強了FileStream,它讓我們在字符串級別上操作文件,但有的時候我們還是需要在字節級上操作文件,卻又不是一個字節 一個字節的操作,通常是2個、4個或8個字節這樣操作,這便有了BinaryWriter和BinaryReader類,它們可以將一個字符或數字按指定 個數字節寫入,也可以一次讀取指定個數字節轉為字符或數字。

?

1.BinaryWriter類

BinaryWriter類以二進制形式將基元類型寫入流,并支持用特定的編碼寫入字符串。

?

常用的方法:

Close ? ? ?關閉當前的BinaryWriter和基礎流

Seek ? ? ? 設置當前流中的位置

Write ? ? ?將值寫入當前流

?

2.BinartReader類

BinartReader類用特定的編碼將基元數據類型讀作二進制值。

?

常用的方法:

Close ? ? ? ? 關閉當前閱讀器及基礎流

Read ? ? ? ? ?從基礎流中讀取字符,并提升流的當前位置

ReadBytes ? ? 從當前流將count個字節讀入字節數組,并使當前位置提升count個字節

ReadInt32 ? ? 從當前流中讀取4個字節有符號整數,并使流的當前位置提升4個字節

ReadString ? ?從當前流讀取一個字符串。字符串有長度前綴,一次7位地被編碼為整數


下面看一個實例:

BinaryWriter?和?BinaryReader?類用于讀取和寫入數據,而不是字符串。

? ?

using UnityEngine;  
using System;  
using System.Text;  
using System.IO;  
using System.Collections;  
using System.Collections.Generic;  public class FileOperator : MonoBehaviour {  // Use this for initialization  void Start () {  WriteFile ();  ReadFile();  }  void ReadFile()          // 讀取文件  
    {  FileStream fs = new FileStream ("D:\\MemoryStreamTest.txt", FileMode.Open, FileAccess.Read);  BinaryReader r = new BinaryReader (fs);  //以二進制方式讀取文件中的內容  int i = r.ReadInt32 ();  float f = r.ReadSingle ();  double d = r.ReadDouble ();  bool b = r.ReadBoolean ();  string s = r.ReadString();  Debug.Log (i);  Debug.Log (f);  Debug.Log (d);  Debug.Log (b);  Debug.Log (s);  r.Close ();  fs.Close ();  }  void WriteFile()     // 寫入文件  
    {  FileStream fs = new FileStream ("D:\\BinaryStreamTest.txt", FileMode.OpenOrCreate);  BinaryWriter w = new BinaryWriter (fs);  //以二進制方式向創建的文件中寫入內容   w.Write (666);                   //  整型  w.Write (66.6f);                // 浮點型  w.Write (6.66);                // double型  w.Write(true);                 // 布爾型  w.Write ("六六六");         // 字符串型  
  w.Close ();  fs.Close();  }  }  

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538670.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python redis 消息隊列_Python的Flask框架應用調用Redis隊列數據的方法

任務異步化打開瀏覽器,輸入地址,按下回車,打開了頁面。于是一個HTTP請求(request)就由客戶端發送到服務器,服務器處理請求,返回響應(response)內容。 我們每天都在瀏覽網…

go ip過濾_用Go實現自己的爬蟲

作者:Masamune在日常生活中,我們時常會遇到一些采集數據相關的需求,比如獲取一些官方數據整理到excel表中進行統計,聚合一些網頁新聞提高自己的閱讀效率等等。雖然許多爬蟲教程都是用python寫的,但是我認為Go語言是比p…

Flume實戰采集文件內容存入HDFS

1、flume安裝目錄下新建文件夾 example 2、在example下新建文件 log-hdfs.conf 內容如下: # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1#exec 指的是命令 # Describe/configure the source a1.sources.r1.type exec #F…

總結計算機語言的基本元素,認識程序設計中基本元素教案.doc

曲靖師院計算機科學與工程學院學生試講教案表課題:認識程序中的基本元素 年級:高一 課時:1課時授課時間:20分鐘 講授者:秦巧林 指導教師:崔麗梅教學目標知識與技能1. 掌握計算機程序中常用的常量、變量、函…

python海龜繪圖圓形_python之海龜繪圖

1. 基本功能介紹 在海龜作圖中,我們可以編寫指令讓一個虛擬的(想象中的)海龜在屏幕上來回移動。這個海龜帶著一只鋼筆,我們可以讓海龜無論移動到哪都使用這只鋼筆來繪制線條。通過編寫代碼,以各種很酷的模式移動海龜&a…

PLSQL Developer導入csv文件到oracle

csv文件內容: 要導入的表結構 create table RPT_MONILUCE_2_P01 ( imsi NUMBER, road_line NUMBER, ci NUMBER, diff NUMBER, rn NUMBER, sdate DATE, report_id NUMBER(20) ) 步驟: 1、在csv第一行上增加…

erwin 不能輸入中文_國產開源建模軟件PDMan與國外商業建模軟件ERwin的主要功能比較...

在數據庫建模的過程中,我們經常會使用到ERwin或者Power Designer之類的建模軟件,來構建我們的邏輯模型和物理模型。但是這類軟件都屬于商業軟件,需要企業購買相應的許可證授權。有些時候,我們會在沒有購買這類商業建模軟件的環境下…

Confluence 6 workbox 通知包含了什么

當一個用戶在 Confluence 中進行下面的操作的時候,workbox 將會顯示為通知: 分享(Shares) 你的頁面或者博客頁面。 提及(Mentions) 你的頁面,博客頁面,回復或者任務。你 關注&#x…

已知一點經緯度,方位角,距離,求另一點經緯度

參考了博文:http://blog.csdn.net/pyx6119822/article/details/52298037 ------------------------------------------------ package hellotest;public class LonLatTest3 {/** 大地坐標系資料WGS-84 長半徑a6378137 短半徑b6356752.3142 扁率f1/298.2572236*//**…

計算機一級excel如何選擇2個,2017年計算機一級excel操作題(2)

(3)建立和編輯圖表選擇工作簿中需要編輯的表單,為其添加圖表,其具體操作如下:步驟1選取“電腦城日出貨統計表”的“配件”和“所占比例”兩列,選擇【插入一圖表】命令,在彈出的“圖表向導”對話框“標準類型”的“圖表…

python的基本語術_一起學python-徹底掌握專業術語“變量”的概念

昨天分享了笨方法學習編程,今天就讓我們通過實戰來接觸python,掌握專業術語“變量”的概念吧 python 中的變量的基本概念和初中代數的方程式X的概念是一樣的,只是在計算機程序當中這個X不僅僅可以代表一個數字,還可以代表一段文字…

lamp自動部署工具_Linux一鍵配置工具ezhttp介紹

簡介: ezhttp是一個Linux一鍵配置工具,采用bash腳本語言編寫。支持自動配置LAMP,LNMP,LNAMP環境,以前提供各種其它的配置工具,如自動配置swap,配置iptables等。項目托管在github,地址為https://github.com/centos-bz/e…

Maven錯誤

1、軟件包javax.servlet不存在 解決辦法: 從tomcat lib目錄下拷貝一個servlet-api.jar的包到“JDK\jre\lib\ext”目錄下 凡是出現找不到包的情況,都可以將找到的包放到JDK\jre\lib\ext下,然后再編譯就能夠通過。 有方法是在pom.xml中引用s…

我對計算機感興趣作文300字,我想對電腦游戲說作文300字

電腦游戲呀!電腦游戲呀!我知道你被人們創造出來,是想給人們帶來快樂,可你也給人們帶來了不少煩惱呀!你可知道,自從爸爸迷上了你,就像是變了一個人似的……每天清晨,天還蒙蒙亮&#…

git設置全局賬號密碼_jenkins2.222使用之二、總體設置

構建前提:由于構建的時候是基于maven、git(碼云)以及jdk1.8來的,所以這些都需要和jenkins安裝在同一臺服務器上面。全局工具配置:1、配置jdk系統管理-全局工具配置-jdk,配置如下:jdk版本可以配置多個,構建的時候&#…

Mybatis源碼之(TypeAliasRegistry)TypeAlias別名實現機制

原文鏈接:http://blog.csdn.net/qq924862077/article/details/52612589 ---------------------------------- 在Mybatis編程中我們經常會用到將某個bean作為參數類型parameterType或者結果返回值類型ResultType,所以很多時候我們需要把完成的Bean的包名…

Java中Synchronized的用法

2019獨角獸企業重金招聘Python工程師標準>>> 《編程思想之多線程與多進程(1)——以操作系統的角度述說線程與進程》一文詳細講述了線程、進程的關系及在操作系統中的表現,這是多線程學習必須了解的基礎。本文將接著講一下Java線程同步中的一個重要的概念…

concat特征融合_MSFNet:多重空間融合網絡進行實時語義分割(北航和曠視聯合提出)...

作者:Tom HardyDate:2020-02-01來源:MSFNet:多重空間融合網絡進行實時語義分割(北航和曠視聯合提出)原文鏈接:https://arxiv.org/abs/1911.07217主要內容實時語義分割是一項具有挑戰性的任務,因…

wifi信號手機測試軟件,專業的WiFi檢測工具有哪些?如何解決wifi信號不好?

原標題:專業的WiFi檢測工具有哪些?如何解決wifi信號不好?有朋友wifi測試軟件有哪些?WiFi信號和聲音一樣,強弱都是可以測量的,檢測WiFi的方法有很多,作為普通的家庭用戶,我們有時需要…

python創建數組與列表_python基礎(三):數組和列表

下面是小凰凰的簡介,看下吧! 💗人生態度:珍惜時間,渴望學習,熱愛音樂,把握命運,享受生活 💗學習技能:網絡 -> 云計算運維 -> python全棧( 當前正在學習…