C#-----類FileStream的使用


   1.枚舉類FileMode

     指定操作系統打開文件的方式

  • CreateNew  指定操作系統應創建一個新的文件
  • Create  指定操作系統應創建一個新的文件。 如果該文件已存在,則會覆蓋它
  • Open  指定操作系統應打開現有文件
  • OpenOrCreate  指定操作系統應打開一個文件,是否它存在,則否則,應創建一個新的文件
  • Truncate  指定操作系統應打開現有文件。 當打開文件時,應被截斷,以便其大小為零字節
  • Append  如果它存在,並且查找到該文件的末尾,或者創建一個新文件,請打開該文件

   2.枚舉類FileAccess

     對於讀、 寫或讀/寫訪問的文件中定義的常數

  • Read  對文件的讀取訪問權限。 可以從文件讀取數據
  • Write  對文件的寫入訪問權限。 數據可以寫入該文件
  • ReadWrite  讀取和寫入到文件的訪問。 可以寫入和從文件中讀取數據

   3.枚舉類FileShare

     包含用於控制的訪問其他類型的常數 System.IO.FileStream 對象可以具有相同的文件

  • None  拒絕共享當前文件。 在關閉文件之前,任何請求打開的文件 (此進程或另一個進程) 將失敗
  • Read  允許以后打開文件進行讀取
  • Write  允許以后打開文件進行寫入
  • ReadWrite  允許以后打開的文件進行讀取或寫入
  • Delete  允許以后刪除文件
  • Inheritable  使文件句柄由子進程繼承。 這是不直接支持 Win32

   4.FileStream類

     FileStream派生於抽象類Stream,Stream抽象類實現了IDisposable接口

     常用構造方法:  

  • FileStream(String 文件路徑,FileMode 文件打開模式)
  • FileStream(String 文件路徑,FileMode 文件打開模式,FileAccess 文件訪問方式)
  • FileStream(String 文件路徑,FileMode 文件打開模式,FileAccess 文件訪問方式,FileShare 文件共享方式)

     常用方法:

  • Read() 從流中讀取數據,返回字節數組
  • Write() 將字節塊(字節數組)寫入該流
  • Seek() 設置文件讀取或寫入的起始位置
  • Flush() 清除該流緩沖區,使得所有緩沖的數據都被寫入到文件中
  • Close() 關閉當前流並釋放與之相關聯的所有系統資源

     屬性:

  • CanRead 判斷當前流是否支持讀取,返回bool值,True表示可以讀取
  • CanWrite 判斷當前流是否支持寫入,返回bool值,True表示可以寫入
  • Position 獲取或設置此流的當前位置

 讀取文本文件

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FileStreamTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (FileStream fileStream = new FileStream("E:\\source.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                byte[] buff = new byte[1024];//設置內存緩存區大小
                while (true)
                {
                    int r = fileStream.Read(buff, 0, buff.Length);
                    if (r == 0)
                        break;
                    else
                    {
                        string str = Encoding.Default.GetString(buff);
                        Console.Write(str);
                    }
                }
            }
            Console.WriteLine("讀取結束");
            Console.ReadLine();
        }
    }
}

 寫入文本文件

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FileStreamTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (FileStream fileStream = new FileStream("E:\\source.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                //將要追加的字符串轉換成字節數組
                byte[] byteBuffer = Encoding.Default.GetBytes("你最好!Yeah!");
                //設置當前流的位置(如果不設置下面的Position屬性,執行Write方法的時候是從前往后覆蓋)
                fileStream.Position = fileStream.Length;
                //寫入文件
                fileStream.Write(byteBuffer, 0, byteBuffer.Length);
                
            }
            Console.ReadLine();

        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM