原文?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(); } }
?