一、System.IO
任何程序中都離不開文件的讀寫與存儲。C#中的文件操作基本上集中在System.IO、System.Text;兩個命名空間內。
System.IO命名空間內常用到的類如下:
1、Directory //文件夾類(靜態),用於創建、移動、枚舉通過目錄和子目錄裏的靜態方法。
2、DirectoryInfo //文件夾類(實例),用於創建、移動、枚舉通過目錄和子目錄裏的實例方法,
3、DriveInfo //提供對有關驅動器的信息訪問
4、File //文件類(靜態),用於創建、複製、刪除、移動和打開文件的靜態方法,並協助創建
//Filestream
5、FileInfo //文件類(實例),用於創建、複製、刪除、移動和打開文件的靜態方法,並協助創建
//Filestream
6、FileStream //以文件爲主的Stream,即支持同步讀寫,也支持異步讀寫操作
7、MemoryStream //創建其支持存儲區爲內存的流
8、Stream //提供字節序列的一般視圖
9、StreamReader //實現一個TextReader,使其以一種特定的編碼從字節流中讀取字符
10、StreamWriter //實現一個TextWriter,使其以一種特定的編碼向六種寫入字符
11、StringReader //實現從字符串進行讀取的TextReader
12、StringWriter //實現一個用於將信息寫入字符串的TextWriter。該信息存儲在基礎StringBuilder中
13、TextReader //表示可讀取的連續字符系列的讀取器
14、TextWriter //表示可以編寫一個有序字符系列的編寫器。該類爲抽象類
15、BinaryReader //用特定的編碼將基元數據類型讀取做二進制的值
16、BinaryWriter //用特定的編碼將基元數據類型寫入二進制的值
System.IO命名空間的類大致可分爲以下3組。
1、操作流的類 //含文件流、內存流、以及讀寫這些流的類
2、操作目錄的類 //包括文件夾目錄下創建、移動、刪除等操作,以及對磁盤信息進行訪問的類。
3、操作文件的類 //包括文件的創建、移動、刪除、複製、獲取文件信息等
System.IO命名控件中常用的類有以下幾種:
FileStream、StreamReader、StreamWriter、BinaryReader、BinaryWriter、MemoryStream、File、FileInfo、Directory類、DirectoryInfo類等。
二、文件類File與FileInfo
File類與FileInfo類爲FIleStream對象的創建和文件的創建、賦值、移動、刪除、打開等提供了支持。使用這兩個類對文件進行操作時必須具備相應的權限,否則將會產生異常。File類和FileInfo類都能完成對文件的操作,但FIleInfo類必須實例化。
下面列出File類常用成員及其說明
Copy //文件複製
Create //文件創建
Delete //文件刪除,如果文件不存則會引發異常
Move //文件移動
Open //打開文件
1、Copy
(1) public static void Copy(string sourceFileName, string destFileName); //源文件路徑、新文件路徑
(2) public static void Copy(string sourceFileName, string destFileName, bool overwrite); //源文件路徑、新文件路徑、允許覆
蓋同名文件
static void Copy_Move()
{
//File.Copy(@"C:/123.txt",@"C:/456.txt"); //如果456.txt文件不存在,則會拷貝。如果已存在則會報錯
File.Copy(@"C:/123.txt",@"C:/456.txt",true); //第三個參數爲是否允許覆蓋現有的文件,爲true會覆蓋掉同名文件
}
2、Move
public static void Move(string sourceFileName, string destFileName); //源文件路徑、目的文件路徑
if (!File.Exists(@"D:/456.txt")) //判斷文件是否存在
File.Move(@"C:/456.txt", @"D:/456.txt"); //移動之前必須確保沒有重名的文件
else
Console.WriteLine("文件已存在,無法進行移動");
3、Delete
public static void Delete(string path); //欲刪除的文件路徑
File.Delete(@"D:/456.txt"); //刪除D盤下的456.txt文件
4、Create
(1) public static FileStream Create(string path); //按照路徑創建
(2) public static FileStream Create(string path, int bufferSize); //路徑創建,並設置緩衝區大容量
(3) public static FileStream Create(string path, int bufferSize, FileOptions options); //路徑創建、設置容量、指定文件流的操
作方式。
(4) public static FileStream Create(string path, int bufferSize, FileOptions options, FileSecurity fileSecurity); //路徑創建、設定容量、訪問權限
FileStream fs=File.Create(@"C:/123.barcode"); //創建的文件的後綴名可以爲任何值。Create方法返回文件流FileStream
5、Open
(1) public static FileStream Open(string path, FileMode mode); //路徑、打開模式
(2) public static FileStream Open(string path, FileMode mode, FileAccess access); //路徑,打開模式、訪問模式
(3) public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share); //路徑、打開模式、訪
問模式、共享
(4) public static FileStream OpenRead(string path); //路徑。自動設置了訪問模式爲Read
(5) public static StreamReader OpenText(string path); //路徑。
(6) public static FileStream OpenWrite(string path); //路徑。自動設置了訪問模式爲write
static void Open()
{
FileStream fs= File.OpenRead(@"C:/123.txt");
StreamReader sr = new StreamReader(fs);
string s=sr.ReadToEnd();
Console.WriteLine("讀取到的內容爲:"+s);
fs.Close();
sr.Close();
}
三、文件夾類Directory和DirectoryInfo類
Directory與DirectoryInfo專門應對文件夾的操作上,與File和FileInfo一樣,Directory裏包含的是靜態方法,DirectoryInfo爲實例化方法。所以一般來說Directory使用的比較多。
常用的屬性和方法如下:
Creation Time //目錄創建的時間
LastAcessTime //上一次訪問的時間
LastWriteTime //上一次修改目錄的時間
Name //當前路徑名
Parent //上一級父目錄名
Root //根目錄名
CreateDirectory //創建指定路徑中的所有目錄
Delete //刪除指定的目錄
Exists //確定路徑是否存在
GetCurrentDirectory //獲取當前工作目錄
GetDirectories //獲取指定目錄下的文件夾
GetFiles //獲取指定目錄下的文件
Move //將文件或目錄及其內容移動到新位置
SetCurrentDirectory //將應用程序的工作目錄設置爲指定的目錄
DirectoryInfo myDirectory= Directory.CreateDirectory(@"C:文件夾創建測試"); //如果文件夾存在則會替換
Console.WriteLine(Directory.GetCurrentDirectory()); //獲取當前項目文件夾,即當前運行的exe文件的文件夾
foreach (var item in Directory.GetDirectories(@"C:\"))
{
Console.WriteLine(item);
}
foreach (var item in Directory.GetFiles(@"C:\")) //獲取文件夾下的所有文件
{
Console.WriteLine(item);
}
Console.WriteLine(Directory.Exists(@"C:\Program Files")); //判斷文件夾是否存在