C#的二進位制檔案操作

pamxy發表於2013-09-20

轉自:http://www.blogjava.net/blogpig/archive/2006/10/24/76910.html

1 .數值應儲存在二進位制檔案

首先列舉文字、二進位制檔案的操作(讀寫)方法:

方式 1 

// 文字檔案操作:建立 / 讀取 / 拷貝 / 刪除 
using System;
using System.IO;
class Test 
{
   string path = @"f:\t.txt";
   publicstaticvoid Main() 
   {       
      //
 建立並寫入 ( 將覆蓋已有檔案 ) 
      if (!File.Exists(path))
      {

//StreamWriter m=new           

//StreamWriter(path,true,Encoding.Default,1);//ASCII,1   Encoding.Default :即//UTF-8編碼  這樣就可以指定編碼方式

    using (StreamWriter sw = File.CreateText(path))
         {
            sw.WriteLine("Hello");
         } 
      }
      //
 讀取檔案 
      using (StreamReader sr = File.OpenText(path)) 
      {
        string s = "";
        while ((s = sr.ReadLine()) != null
        {
           Console.WriteLine(s);
        }
     }
     //
 刪除 / 拷貝 
     try
     {
        File.Delete(path);
        File.Copy(path, @"f:\tt.txt");
     } 
     catch (Exception e) 
     {
        Console.WriteLine("The process failed: {0}", e.ToString());
     }
   }
}

方式 2  
// 流檔案(二進位制)操作 
private const string name = "Test.data";
public static void Main(String[] args) 
{
    //
 開啟檔案 ()  , 或通過 File 建立立如: fs = File.Create(path, 1024) 
    FileStream fs = new FileStream(name, FileMode.CreateNew);
    //
 轉換為位元組 寫入資料 ( 可寫入中文 ) 
    Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
    //
 位元組陣列 , 位元組偏移量 , 最多寫入的位元組數

BinaryWriter   w   =   new   BinaryWriter(fs);

// 設定要寫入的偏移量 

fs.Position=fs.Length; 
  //  fs.Write(info, 0, info.Length);   這個也可以 
    w.Close();
    fs.Close();
    //
 開啟檔案 
    fs = new FileStream(name, FileMode.Open, FileAccess.Read);
    //
 讀取 
    BinaryReader r = new BinaryReader(fs);
    for (int i = 0; i < 11; i++) 
    {
        Console.WriteLine(r.ReadInt32());
    }
    w.Close();
    fs.Close();

在將一系列二進位制數如方式 1 寫入到 file.txt( 二進位制 ) 檔案後,開啟 file.txt 後顯示的資料二進位制數有些錯誤,有些正確。(與存入的不一樣) 向檔案中寫入的 預設(也可以設定) 都是使用 UTF-8 編碼 。開啟 file.txt 是也是預設 UTF-8 編碼。

 

若將其如方式 2 存入 二進位制檔案,則顯示的資料一致。若將二進位制數(整數)儲存為文字檔案出錯。二進位制檔案是直接寫入檔案的(磁碟)沒有經過編碼和讀取時的解碼


相關文章