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

詳解C# FileStream類

 更新時間:2020年06月10日 11:06:09   作者:少年。  
這篇文章主要介紹了詳解C# FileStream類的相關(guān)知識,文中講解的非常細(xì)致,代碼供大家參考和學(xué)習(xí),感興趣的朋友可以了解下

C# FileStream類

在 C# 語言中文件讀寫流使用 FileStream 類來表示,F(xiàn)ileStream 類主要用于文件的讀寫,不僅能讀寫普通的文本文件,還可以讀取圖像文件、聲音文件等不同格式的文件。區(qū)別于File類的是它對文件可進(jìn)行分步讀寫,減小內(nèi)存壓力,缺點(diǎn)是我們需要手動的關(guān)閉和釋放資源,

FileAccess

FileAccess 枚舉類型主要用于設(shè)置文件的訪問方式,具體的枚舉值如下。

    ●  Read:以只讀方式打開文件。
    ●  Write:以寫方式打開文件。
    ●  ReadWrite:以讀寫方式打開文件。

FileMode

FileMode 枚舉類型主要用于設(shè)置文件打開或創(chuàng)建的方式,具體的枚舉值如下。

    ●  CreateNew:創(chuàng)建新文件,如果文件已經(jīng)存在,則會拋出異常。

    ●  Create:創(chuàng)建文件,如果文件不存在,則刪除原來的文件,重新創(chuàng)建文件。

    ●  Open:打開已經(jīng)存在的文件,如果文件不存在,則會拋出異常。

    ●  OpenOrCreate:打開已經(jīng)存在的文件,如果文件不存在,則創(chuàng)建文件。

    ●  Truncate:打開已經(jīng)存在的文件,并清除文件中的內(nèi)容,保留文件的創(chuàng)建日期。如果文件不存在,則會拋出異常。

    ●   Append:打開文件,用于向文件中追加內(nèi)容,如果文件不存在,則創(chuàng)建一個新文件。

FileShare

FileShare 枚舉類型主要用于設(shè)置多個對象同時訪問同一個文件時的訪問控制,具體的枚舉值如下。

    ●  None:謝絕共享當(dāng)前的文件。

    ●  Read:允許隨后打開文件讀取信息。

    ●  ReadWrite:允許隨后打開文件讀寫信息。

    ●  Write:允許隨后打開文件寫入信息。

    ●  Delete:允許隨后刪除文件。

    ●  Inheritable:使文件句柄可由子進(jìn)程繼承。

FileOptions

FileOptions 枚舉類型用于設(shè)置文件的高級選項(xiàng),包括文件是否加密、訪問后是否刪除等,具體的枚舉值如下。

    ●  WriteThrough:指示系統(tǒng)應(yīng)通過任何中間緩存、直接寫入磁盤。

    ●  None:指示在生成 System.IO.FileStream 對象時不應(yīng)使用其他選項(xiàng)。

    ● Encrypted:指示文件是加密的,只能通過用于加密的同一用戶賬戶來解密。

    ●  DeleteOnClose:指示當(dāng)不再使用某個文件時自動刪除該文件。

    ● SequentialScan:指示按從頭到尾的順序訪問文件。

    ● RandomAccess:指示隨機(jī)訪問文件。

    ● Asynchronous:指示文件可用于異步讀取和寫入。

FileStream 類的構(gòu)造方法有很多,這里介紹一些常用的構(gòu)造方法,如下表所示。

構(gòu)造方法 說明
FileStream(string path, FileMode mode) 使用指定路徑的文件、文件模式創(chuàng)建 FileStream 類的實(shí)例
FileStream(string path, FileMode mode, FileAccess access) 使用指定路徑的文件、文件打開模式、文件訪問模式創(chuàng)建 FileStream 類的實(shí)例
FileStream(string path, FileMode mode, FileAccess access, FileShare share) 使用指定的路徑、創(chuàng)建模式、讀寫權(quán)限和共享權(quán)限創(chuàng)建 FileStream 類的一個新實(shí)例
FileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, FileOptions options) 使用指定的路徑、創(chuàng)建模式、讀寫權(quán)限和共享權(quán)限、其他 文件選項(xiàng)創(chuàng)建 FileStream 類的實(shí)例
  

FileStream

屬性或方法 作用
bool CanRead 只讀屬性,獲取一個值,該值指示當(dāng)前流是否支持讀取
bool CanSeek 只讀屬性,獲取一個值,該值指示當(dāng)前流是否支持查找
bool CanWrite 只讀屬性,獲取一個值,該值指示當(dāng)前流是否支持寫入
bool IsAsync 只讀屬性,獲取一個值,該值指示 FileStream 是異步還 是同步打開的
long Length 只讀屬性,獲取用字節(jié)表示的流長度
string Name 只讀屬性,獲取傳遞給構(gòu)造方法的 FileStream 的名稱
long Position 屬性,獲取或設(shè)置此流的當(dāng)前位置
int Read(byte[] array, int offset, int count) 從流中讀取字節(jié)塊并將該數(shù)據(jù)寫入給定緩沖區(qū)中
int ReadByte() 從文件中讀取一個字節(jié),并將讀取位置提升一個字節(jié)
long Seek(lorig offset, SeekOrigin origin) 將該流的當(dāng)前位置設(shè)置為給定值
void Lock(long position, long length) 防止其他進(jìn)程讀取或?qū)懭?System.IO.FileStream
void Unlock(long position, long length) 允許其他進(jìn)程訪問以前鎖定的某個文件的全部或部分
void Write(byte[] array, int offset, int count) 將字節(jié)塊寫入文件流
void WriteByte(byte value) 將一個字節(jié)寫入文件流中的當(dāng)前位置

File和FileStream的區(qū)別

File是一個靜態(tài)類;FileStream是一個非靜態(tài)類。

File:是一個文件的類,對文件進(jìn)行操作。其內(nèi)部封裝了對文件的各種操作(MSDN:提供用于創(chuàng)建、復(fù)制、刪除、移動和打開單一文件的靜態(tài)方法,并協(xié)助創(chuàng)建FileStream對象)。

  FileStream:文件流的類。對txt,xml,avi等文件進(jìn)行內(nèi)容寫入、讀取、復(fù)制...時候需要使用的一個工具。

創(chuàng)建實(shí)例

string path = "D:\\test.txt";

FileStream fileStream1 = **new** FileStream(path, FileMode.Open);

FileStream fileStream2 = **new** FileStream(path, FileMode.Open, FileAccess.Read);

FileStream fileStream3 = **new** FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);

FileStream fileStream4 = **new** FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 10, FileOptions.None);
    //定義文件路徑
    string path = @"D:\\code\\test.txt";
    //創(chuàng)建 FileStream 類的實(shí)例
    FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
    //定義屬性
    string msg = "11111";
    //將字符串轉(zhuǎn)換為字節(jié)數(shù)組
    byte[] bytes = Encoding.UTF8.GetBytes(msg);
    //向文件中寫入字節(jié)數(shù)組
    fileStream.Write(bytes, 0, bytes.Length);
    //刷新緩沖區(qū)
    fileStream.Flush();
    //關(guān)閉流
    fileStream.Close();
class Program
{
  static void Main(string[] args)
  {
    //定義文件路徑
    string path = @"D:\\code\\test.txt";
    //判斷是否含有指定文件
    if (File.Exists(path))
    {
      FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
      //定義存放文件信息的字節(jié)數(shù)組
      byte[] bytes = new byte[fileStream.Length];
      //讀取文件信息
      fileStream.Read(bytes, 0, bytes.Length);
      //將得到的字節(jié)型數(shù)組重寫編碼為字符型數(shù)組
      char[] c = Encoding.UTF8.GetChars(bytes);
      //輸出
      Console.WriteLine(c);
      //關(guān)閉流
      fileStream.Close();
    }
    else
    {
      Console.WriteLine("不存在!");
    }
  }
}

文件復(fù)制

 public class FileSreamTest
  {
    

    public static void CopyFile(string source,string target)
    {
      //讀取文件流
      using (FileStream fsRead = new FileStream(source,FileMode.Open,FileAccess.Read))
      {
        //寫入流
        using (FileStream fsWrite = new FileStream(target,FileMode.OpenOrCreate,FileAccess.Write))
        {
           byte[] buffer = new byte[1024*1024*5];

           while (true)
           { 
             //返回讀取字節(jié)數(shù)
            int r= fsRead.Read(buffer,0,buffer.Length);
            if (r==0)
            {
              break;
            }
             //寫入
             fsWrite.Write(buffer,0,r);
           }
          
        }
      }
    }

  }



  static void Main(string[] args)
    {
     string source =@"E:\功能流程.7z";
     string target=@"C:\Users\CH190006\Desktop\Test\功能流程.7z";
     FileSreamTest.CopyFile(source,target);
      Console.ReadKey();

    }

以上就是詳解C# FileStream類的詳細(xì)內(nèi)容,更多關(guān)于C# FileStream類的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#創(chuàng)建一個Word并打開的方法

    C#創(chuàng)建一個Word并打開的方法

    這篇文章主要介紹了C#創(chuàng)建一個Word并打開的方法,實(shí)例分析了C#操作word的常用技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • C#中使用強(qiáng)制類型實(shí)現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換

    C#中使用強(qiáng)制類型實(shí)現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換

    這篇文章主要介紹了C#中使用強(qiáng)制類型實(shí)現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換,本文還給出了另一種方法,需要的朋友可以參考下
    2014-08-08
  • C#中增強(qiáng)類功能的幾種方式詳解

    C#中增強(qiáng)類功能的幾種方式詳解

    這篇文章主要給大家介紹了關(guān)于C#中增強(qiáng)類功能的幾種方式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • C# 最基礎(chǔ)知識介紹--多態(tài)

    C# 最基礎(chǔ)知識介紹--多態(tài)

    在本篇文章將對大家介紹得是在C#中最常用的幾種概念,即:多態(tài),下面文章內(nèi)容將對大家詳細(xì)介紹這幾種常用得狀態(tài)
    2021-09-09
  • C#連接SQL數(shù)據(jù)庫和查詢數(shù)據(jù)功能的操作技巧

    C#連接SQL數(shù)據(jù)庫和查詢數(shù)據(jù)功能的操作技巧

    本文給大家分享C#連接SQL數(shù)據(jù)庫和查詢數(shù)據(jù)功能的操作技巧,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-05-05
  • C#中的委托介紹

    C#中的委托介紹

    這篇文章主要介紹了C#中的委托介紹,本文講解了聲明委托的方式、匿名方法、多播委托等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • C#中@的用法總結(jié)

    C#中@的用法總結(jié)

    這篇文章主要介紹了C#中@的用法總結(jié),非常重要的用法總結(jié),需要的朋友可以參考下
    2014-08-08
  • C#的winform控件命名規(guī)范

    C#的winform控件命名規(guī)范

    這篇文章主要介紹了C#的winform控件命名規(guī)范,對各種常用控件的命名規(guī)范做了較為詳細(xì)的講解,需要的朋友可以參考下
    2015-01-01
  • C#編寫發(fā)送郵件組件

    C#編寫發(fā)送郵件組件

    本文給大家分享的是使用C#編寫的發(fā)送郵件的組件,非常的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • OpenXml合并Table單元格代碼實(shí)例

    OpenXml合并Table單元格代碼實(shí)例

    在本篇文章里小編給大家整理了關(guān)于OpenXml合并Table單元格的相關(guān)實(shí)例詳解,需要的朋友們參考下。
    2019-08-08

最新評論

隆安县| 常州市| 常宁市| 汪清县| 镇巴县| 辽宁省| 耿马| 杨浦区| 格尔木市| 洞口县| 会昌县| 德格县| 扎兰屯市| 吴川市| 伊吾县| 霞浦县| 万安县| 黔南| 大庆市| 开化县| 蚌埠市| 家居| 江津市| 攀枝花市| 姚安县| 武冈市| 白沙| 宁武县| 行唐县| SHOW| 固原市| 太仆寺旗| 自治县| 松潘县| 濮阳县| 瓦房店市| 伊吾县| 商都县| 定日县| 永修县| 贵德县|