91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中FileStream類的詳細解析

發布時間:2020-07-17 11:22:03 來源:億速云 閱讀:364 作者:小豬 欄目:編程語言

小編這次要給大家分享的是C#中FileStream類的詳細解析,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

C# FileStream類

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

FileAccess

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

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

FileMode

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

    ●  CreateNew:創建新文件,如果文件已經存在,則會拋出異常。

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

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

    ●  OpenOrCreate:打開已經存在的文件,如果文件不存在,則創建文件。

    ●  Truncate:打開已經存在的文件,并清除文件中的內容,保留文件的創建日期。如果文件不存在,則會拋出異常。

    ●   Append:打開文件,用于向文件中追加內容,如果文件不存在,則創建一個新文件。

FileShare

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

    ●  None:謝絕共享當前的文件。

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

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

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

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

    ●  Inheritable:使文件句柄可由子進程繼承。

FileOptions

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

    ●  WriteThrough:指示系統應通過任何中間緩存、直接寫入磁盤。

    ●  None:指示在生成 System.IO.FileStream 對象時不應使用其他選項。

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

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

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

    ● RandomAccess:指示隨機訪問文件。

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

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

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

FileStream

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

File和FileStream的區別

File是一個靜態類;FileStream是一個非靜態類。

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

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

創建實例

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";
    //創建 FileStream 類的實例
    FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
    //定義屬性
    string msg = "11111";
    //將字符串轉換為字節數組
    byte[] bytes = Encoding.UTF8.GetBytes(msg);
    //向文件中寫入字節數組
    fileStream.Write(bytes, 0, bytes.Length);
    //刷新緩沖區
    fileStream.Flush();
    //關閉流
    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);
      //定義存放文件信息的字節數組
      byte[] bytes = new byte[fileStream.Length];
      //讀取文件信息
      fileStream.Read(bytes, 0, bytes.Length);
      //將得到的字節型數組重寫編碼為字符型數組
      char[] c = Encoding.UTF8.GetChars(bytes);
      //輸出
      Console.WriteLine(c);
      //關閉流
      fileStream.Close();
    }
    else
    {
      Console.WriteLine("不存在!");
    }
  }
}

文件復制

 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)
           { 
             //返回讀取字節數
            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類的詳細解析的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳谷县| 彭阳县| 蕲春县| 盈江县| 麦盖提县| 大洼县| 太仆寺旗| 石河子市| 武安市| 兴和县| 永登县| 区。| 淮滨县| 调兵山市| 旅游| 高安市| 乌兰察布市| 青冈县| 巫山县| 北辰区| 江西省| 马尔康县| 河东区| 同江市| 沙坪坝区| 托克逊县| 宁城县| 杭锦后旗| 石楼县| 友谊县| 丹东市| 东海县| 安图县| 长白| 汝阳县| 临湘市| 莒南县| 农安县| 武宣县| 栾川县| 凯里市|