最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#通過指針讀取文件的方法

 更新時間:2015年06月29日 09:01:12   作者:pythoner  
這篇文章主要介紹了C#通過指針讀取文件的方法,涉及C#針對文件的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了C#通過指針讀取文件的方法。分享給大家供大家參考。具體如下:

// readfile.cs
// 編譯時使用:/unsafe
// 參數(shù):readfile.txt
// 使用該程序讀并顯示文本文件。
using System;
using System.Runtime.InteropServices;
using System.Text;
class FileReader
{
  const uint GENERIC_READ = 0x80000000;
  const uint OPEN_EXISTING = 3;
  IntPtr handle;
  [DllImport("kernel32", SetLastError=true)]
  static extern unsafe IntPtr CreateFile(
    string FileName,        // 文件名
    uint DesiredAccess,        // 訪問模式
    uint ShareMode,          // 共享模式
    uint SecurityAttributes,    // 安全屬性
    uint CreationDisposition,    // 如何創(chuàng)建
    uint FlagsAndAttributes,    // 文件屬性
    int hTemplateFile        // 模板文件的句柄
    );
  [DllImport("kernel32", SetLastError=true)]
  static extern unsafe bool ReadFile(
    IntPtr hFile,          // 文件句柄
    void* pBuffer,        // 數(shù)據(jù)緩沖區(qū)
    int NumberOfBytesToRead,  // 要讀取的字節(jié)數(shù)
    int* pNumberOfBytesRead,    // 已讀取的字節(jié)數(shù)
    int Overlapped        // 重疊緩沖區(qū)
    );
  [DllImport("kernel32", SetLastError=true)]
  static extern unsafe bool CloseHandle(
    IntPtr hObject // 對象句柄
    );
  public bool Open(string FileName)
  {
    // 打開現(xiàn)有文件進(jìn)行讀取
    handle = CreateFile(
      FileName,
      GENERIC_READ,
      0, 
      0, 
      OPEN_EXISTING,
      0,
      0);
    if (handle != IntPtr.Zero)
      return true;
    else
      return false;
  }
  public unsafe int Read(byte[] buffer, int index, int count) 
  {
    int n = 0;
    fixed (byte* p = buffer) 
    {
      if (!ReadFile(handle, p + index, count, &n, 0))
        return 0;
    }
    return n;
  }
  public bool Close()
  {
    // 關(guān)閉文件句柄
    return CloseHandle(handle);
  }
}
class Test
{
  public static int Main(string[] args)
  {
    if (args.Length != 1)
    {
      Console.WriteLine("Usage : ReadFile <FileName>");
      return 1;
    }
    if (! System.IO.File.Exists(args[0]))
    {
      Console.WriteLine("File " + args[0] + " not found."); 
      return 1;
    }
    byte[] buffer = new byte[128];
    FileReader fr = new FileReader();
    if (fr.Open(args[0]))
    {
      // 假定正在讀取 ASCII 文件
      ASCIIEncoding Encoding = new ASCIIEncoding();
      int bytesRead;
      do 
      {
        bytesRead = fr.Read(buffer, 0, buffer.Length);
        string content = Encoding.GetString(buffer,0,bytesRead);
        Console.Write("{0}", content);
      }
      while ( bytesRead > 0);
      fr.Close();
      return 0;
    }
    else
    {
      Console.WriteLine("Failed to open requested file");
      return 1;
    }
  }
}

希望本文所述對大家的C#程序設(shè)計有所幫助。

相關(guān)文章

  • C#生成隨機(jī)數(shù)功能示例

    C#生成隨機(jī)數(shù)功能示例

    這篇文章主要介紹了C#生成隨機(jī)數(shù)功能,涉及C#數(shù)學(xué)運算與字符串操作相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • C#基于面向過程計算加權(quán)平均分的方法

    C#基于面向過程計算加權(quán)平均分的方法

    這篇文章主要介紹了C#基于面向過程計算加權(quán)平均分的方法,涉及C#數(shù)學(xué)運算的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • c#注冊表操作類分享

    c#注冊表操作類分享

    這篇文章主要介紹了c#注冊表操作類,主要包括創(chuàng)建注冊表項、讀取注冊表項、判斷注冊表項是否存在、刪除注冊表項、創(chuàng)建注冊表鍵值 、讀取注冊表鍵值、判斷注冊表鍵值是否存在、刪除注冊表鍵值等功能,需要的朋友可以參考下
    2014-03-03
  • C#各種異常處理方式總結(jié)

    C#各種異常處理方式總結(jié)

    這篇文章介紹了C#各種異常的處理方式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • C#設(shè)計模式之觀察者模式實例講解

    C#設(shè)計模式之觀察者模式實例講解

    這篇文章主要介紹了C#設(shè)計模式之觀察者模式實例講解,本文詳細(xì)講解了觀察者模式的定義、優(yōu)缺點、代碼實例等,需要的朋友可以參考下
    2014-10-10
  • C#方法中參數(shù)ref和out詳解

    C#方法中參數(shù)ref和out詳解

    這篇文章主要為大家詳細(xì)介紹了C#方法中參數(shù)ref和out的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C# 開發(fā)(創(chuàng)藍(lán)253)手機(jī)短信驗證碼接口的實例

    C# 開發(fā)(創(chuàng)藍(lán)253)手機(jī)短信驗證碼接口的實例

    下面小編就為大家分享一篇C# 開發(fā)(創(chuàng)藍(lán)253)手機(jī)短信驗證碼接口的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • C#開發(fā)Windows UWP系列之布局面板RelativePanel

    C#開發(fā)Windows UWP系列之布局面板RelativePanel

    這篇文章介紹了C#開發(fā)Windows UWP系列之布局面板RelativePanel,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C#基于COM方式讀取Excel表格的方法

    C#基于COM方式讀取Excel表格的方法

    這篇文章主要介紹了C#基于COM方式讀取Excel表格的方法,涉及C# COM組件的調(diào)用與Excel表格的使用技巧,需要的朋友可以參考下
    2016-07-07
  • WPF+Canvas實現(xiàn)平滑筆跡的示例代碼

    WPF+Canvas實現(xiàn)平滑筆跡的示例代碼

    這篇文章主要介紹了如何利用WPF+Canvas實現(xiàn)平滑筆跡效果,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-09-09

最新評論

高淳县| 英德市| 德阳市| 上林县| 高碑店市| 天等县| 天水市| 丽江市| 金塔县| 柞水县| 唐海县| 新源县| 临潭县| 仁布县| 咸丰县| 集安市| 乌兰察布市| 蕉岭县| 胶州市| 红桥区| 舟曲县| 宣恩县| 历史| 聂拉木县| 扶风县| 嘉定区| 道孚县| 德化县| 清水河县| 万源市| 崇明县| 佛山市| 体育| 东明县| 石景山区| 化州市| 沧源| 东明县| 思茅市| 交城县| 东山县|