亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解C# FileStream類(lèi)

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

C# FileStream類(lèi)

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

FileAccess

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

    ●  Read:以只讀方式打開(kāi)文件。
    ●  Write:以寫(xiě)方式打開(kāi)文件。
    ●  ReadWrite:以讀寫(xiě)方式打開(kāi)文件。

FileMode

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

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

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

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

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

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

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

FileShare

FileShare 枚舉類(lèi)型主要用于設(shè)置多個(gè)對(duì)象同時(shí)訪(fǎng)問(wèn)同一個(gè)文件時(shí)的訪(fǎng)問(wèn)控制,具體的枚舉值如下。

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

    ●  Read:允許隨后打開(kāi)文件讀取信息。

    ●  ReadWrite:允許隨后打開(kāi)文件讀寫(xiě)信息。

    ●  Write:允許隨后打開(kāi)文件寫(xiě)入信息。

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

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

FileOptions

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

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

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

    ● Encrypted:指示文件是加密的,只能通過(guò)用于加密的同一用戶(hù)賬戶(hù)來(lái)解密。

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

    ● SequentialScan:指示按從頭到尾的順序訪(fǎng)問(wèn)文件。

    ● RandomAccess:指示隨機(jī)訪(fǎng)問(wèn)文件。

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

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

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

FileStream

屬性或方法 作用
bool CanRead 只讀屬性,獲取一個(gè)值,該值指示當(dāng)前流是否支持讀取
bool CanSeek 只讀屬性,獲取一個(gè)值,該值指示當(dāng)前流是否支持查找
bool CanWrite 只讀屬性,獲取一個(gè)值,該值指示當(dāng)前流是否支持寫(xiě)入
bool IsAsync 只讀屬性,獲取一個(gè)值,該值指示 FileStream 是異步還 是同步打開(kāi)的
long Length 只讀屬性,獲取用字節(jié)表示的流長(zhǎng)度
string Name 只讀屬性,獲取傳遞給構(gòu)造方法的 FileStream 的名稱(chēng)
long Position 屬性,獲取或設(shè)置此流的當(dāng)前位置
int Read(byte[] array, int offset, int count) 從流中讀取字節(jié)塊并將該數(shù)據(jù)寫(xiě)入給定緩沖區(qū)中
int ReadByte() 從文件中讀取一個(gè)字節(jié),并將讀取位置提升一個(gè)字節(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)程訪(fǎng)問(wèn)以前鎖定的某個(gè)文件的全部或部分
void Write(byte[] array, int offset, int count) 將字節(jié)塊寫(xiě)入文件流
void WriteByte(byte value) 將一個(gè)字節(jié)寫(xiě)入文件流中的當(dāng)前位置

File和FileStream的區(qū)別

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

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

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

創(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 類(lèi)的實(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);
    //向文件中寫(xiě)入字節(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ù)組重寫(xiě)編碼為字符型數(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))
      {
        //寫(xiě)入流
        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;
            }
             //寫(xiě)入
             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類(lèi)的詳細(xì)內(nèi)容,更多關(guān)于C# FileStream類(lèi)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實(shí)現(xiàn)漢字轉(zhuǎn)拼音(多音字)功能詳解

    C#實(shí)現(xiàn)漢字轉(zhuǎn)拼音(多音字)功能詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)漢字轉(zhuǎn)拼音(支持多音字)的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-02-02
  • C#運(yùn)算符重載用法實(shí)例分析

    C#運(yùn)算符重載用法實(shí)例分析

    這篇文章主要介紹了C#運(yùn)算符重載用法,實(shí)例分析了C#中運(yùn)算符重載的基本實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)中文驗(yàn)證碼的示例代碼

    C#實(shí)現(xiàn)中文驗(yàn)證碼的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)中文驗(yàn)證碼功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • C#中File類(lèi)的文件操作方法詳解

    C#中File類(lèi)的文件操作方法詳解

    這篇文章主要介紹了C#中File類(lèi)的文件操作方法,以實(shí)例的形式詳細(xì)分析了File類(lèi)對(duì)文件的創(chuàng)建、打開(kāi)、復(fù)制、刪除等各種常用的操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • C#異常處理知識(shí)匯總

    C#異常處理知識(shí)匯總

    這篇文章主要介紹了C#異常處理的知識(shí),文中講解非常詳細(xì),配合代碼幫助大家更好的理解,感興趣的朋友可以參考下
    2020-06-06
  • C#微信公眾號(hào)開(kāi)發(fā) 微信事件交互

    C#微信公眾號(hào)開(kāi)發(fā) 微信事件交互

    這篇文章主要介紹了C#微信公眾號(hào)開(kāi)發(fā),微信事件交互的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • C#使用NUnit進(jìn)行單元測(cè)試詳解

    C#使用NUnit進(jìn)行單元測(cè)試詳解

    NUnit是一個(gè)開(kāi)源的.Net單元測(cè)試框架,經(jīng)常被用來(lái)在.Net體系下做白盒測(cè)試,本文主要為大家詳細(xì)介紹了如何C#如何使用NUnit進(jìn)行單元測(cè)試,感興趣的可以了解下
    2023-12-12
  • C#實(shí)現(xiàn)Winform鼠標(biāo)拖動(dòng)窗口大小時(shí)設(shè)定窗口最小尺寸的方法

    C#實(shí)現(xiàn)Winform鼠標(biāo)拖動(dòng)窗口大小時(shí)設(shè)定窗口最小尺寸的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)Winform鼠標(biāo)拖動(dòng)窗口大小時(shí)設(shè)定窗口最小尺寸的方法,涉及WinForm改變窗口大小時(shí)動(dòng)態(tài)判斷當(dāng)前窗口尺寸的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-11-11
  • Unity 實(shí)現(xiàn)給物體替換材質(zhì)球

    Unity 實(shí)現(xiàn)給物體替換材質(zhì)球

    這篇文章主要介紹了Unity 實(shí)現(xiàn)給物體替換材質(zhì)球的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • WinForm繪制圓角的方法

    WinForm繪制圓角的方法

    這篇文章主要介紹了WinForm繪制圓角的方法,涉及C#中GraphicsPath模塊的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評(píng)論