C#文件操作(一)

一、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"));  //判斷文件夾是否存在
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章