標籤:style blog http color 使用 io 檔案 for
主要知識點:
一. FileStream file_read = new FileStream("1.txt", FileMode.Open, FileAccess.Read);//唯讀許可權開啟1.txt檔案
參數1:
"1.txt":檔案路徑,通常用字串變數或者字串常量表示,如:"d:\\1.txt";
參數2:
FileMode.Open:開啟模式,此種方式如果存在則開啟,否則拋出異常。
FileMode.Append:追加模式,開啟檔案或建立檔案並尋找到檔案尾,只能在FileAccess.Write許可權下使用。
FileMode.Create:指定作業系統建立檔案,如果已存在相同名稱檔案,則覆蓋。
FileMode.CreateNew:指定作業系統建立檔案,如果已存在相同名稱檔案,則拋出異常。
FileMode.OpenOrCreate:如果檔案存在,則開啟。如果不存在則建立一個檔案。
FileMode.Truncate:開啟現有檔案,檔案一旦被開啟就被截斷為0位元組大小。
參數3:
FileAccess.Read:唯讀寫入權限
FileAccess.ReadWrite:讀寫權限
FileAccess.Write:寫入權限
二、StreamReader sr = new StreamReader(file_read,Encoding.Default);//擷取讀入流讀取1.txt
參數1:
file_read:擷取檔案流,即擷取指定檔案檔案流,通常用字串變數表示。
參數2:
Encoding.Default:擷取作業系統的當前ANSI字碼頁的編碼
Encoding.UTF8:擷取UTF8格式的編碼
Encoding.Unicode:擷取Unocode格式的編碼
Encoding.ASCII:擷取ASCLL格式的編碼
Encoding.Convert (Encoding, Encoding, Byte[]) :將一種編碼方式轉換成另一種編碼方式。
Encoding.Convert (Encoding, Encoding, Byte[], Int32, Int32) :將某一範圍內由一種編碼方式轉換成另一種編碼方式。
三、string[] filelist = File.ReadAllLines("1.txt", Encoding.Default);//讀取檔案內容所有行儲存到字串數組中。
四、string line = sr.ReadLine();//讀取一行檔案內容,從讀入流擷取內容。
例子一:
核心方法:string[] filelist = File.ReadAllLines("1.txt", Encoding.Default);//讀取檔案內容所有行儲存到字串數組中
代碼如下:
using System;using System.Collections.Generic;using System.Text;using System.IO;namespace studyread{ class Program { static void Main(string[] args) { FileStream file_read = new FileStream("1.txt", FileMode.Open, FileAccess.Read);//建立檔案流,唯讀許可權開啟1.txt檔案 string[] filelist = File.ReadAllLines("1.txt", Encoding.Default);//讀取檔案內容所有行儲存到字串數組中。 //迴圈列印讀入內容。 for (int i = 0; i <= filelist.Length - 1; i++) { Console.WriteLine("第{0}行內容為:{1}", i, filelist[i]); } Console.ReadKey(); } }}
運行:
例子二:
核心語句:string line = sr.ReadLine();//讀取一行檔案內容,從讀入流擷取內容。
代碼如下:
using System;using System.Collections.Generic;using System.Text;using System.IO;namespace studyread{ class Program { static void Main(string[] args) { FileStream file_read = new FileStream("1.txt", FileMode.Open, FileAccess.Read);//建立檔案流,唯讀許可權開啟1.txt檔案 StreamReader sr = new StreamReader(file_read, Encoding.Default);//建立讀入流取檔案流 string line= sr.ReadLine();;//讀取一行記憶體儲存給字串line Console.WriteLine(line); Console.ReadKey(); } }}
運行:
當然上列代碼利用迴圈也可以將所有內容讀取出來,達到例子一的效果。
修改源碼如下:
using System;using System.Collections.Generic;using System.Text;using System.IO;namespace studyread{ class Program { static void Main(string[] args) { FileStream file_read = new FileStream("1.txt", FileMode.Open, FileAccess.Read);//建立檔案流,唯讀許可權開啟1.txt檔案 StreamReader sr = new StreamReader(file_read, Encoding.Default);//建立讀入流取檔案流 string[] filelist = File.ReadAllLines("1.txt", Encoding.ASCII);//這裡主要用來擷取總行數filelist.Length string line;//定義字串變數line,用來儲存讀取的內容 //迴圈讀取並列印檔案每一行內容,即 for (int i = 0; i <= filelist.Length - 1; i++) { line = sr.ReadLine();//讀取一行內容儲存到字串line中。 Console.WriteLine(line); } Console.ReadKey(); } }}
程式:
附錄記事本檔案內容: