重點介紹windows應用程序對文件讀寫所涉及的System.IO命名空間和File、FileInfo、FileStream、BinaryReader、BinaryWriter、BufferedStream等類,以及常用的方法、參數、屬性、事件、枚舉等。
表 System.IO 命名空間常用的類
類 |
說明 |
提供用於創建、複製、刪除、移動和打開文件的靜態方法,並協助創建 FileStream 對象。 | |
提供創建、複製、刪除、移動和打開文件的實例方法,並且幫助創建 FileStream 對象。無法繼承此類。 | |
FileStream |
公開以文件爲主的 Stream,既支持同步讀寫操作,也支持異步讀寫操作。 |
BinaryReader |
用特定的編碼將基元數據類型讀作二進制值。 |
BinaryWriter |
以二進制形式將基元類型寫入流,並支持用特定的編碼寫入字符串。 |
BufferedStream |
給另一流上的讀寫操作添加一個緩衝層。無法繼承此類。 |
Directory |
公開用於創建、移動和枚舉通過目錄和子目錄的靜態方法。無法繼承此類。 |
DirectoryInfo |
公開用於創建、移動和枚舉目錄和子目錄的實例方法。無法繼承此類。 |
Path |
對包含文件或目錄路徑信息的 String 實例執行操作。這些操作是以跨平臺的方式執行的。 |
StreamReader |
實現一個 TextReader,使其以一種特定的編碼從字節流中讀取字符。 |
StreamWriter |
實現一個 TextWriter,使其以一種特定的編碼向流中寫入字符。 |
FileSysWatcher |
偵聽文件系統更改通知,並在目錄或目錄中的文件發生更改時引發事件。 |
File類的常用方法
方法 |
說明 |
Move |
將指定文件移到新位置,並提供指定新文件名的選項。 |
Delete |
刪除指定的文件。如果指定的文件不存在,則不引發異常。 |
Copy |
已重載。 將現有文件複製到新文件。 |
CreateText |
創建或打開一個文件用於寫入 UTF-8 編碼的文本。 |
OpenText |
打開現有 UTF-8 編碼文本文件以進行讀取。 |
Open |
已重載。 打開指定路徑上的 FileStream。 |
瞭解File類的一些主要方法
方法 |
說明 |
Move |
將指定文件移到新位置,並提供指定新文件名的選項。 |
Delete |
刪除指定的文件。如果指定的文件不存在,則不引發異常。 |
Copy |
已重載。 將現有文件複製到新文件。 |
CreateText |
創建或打開一個文件用於寫入 UTF-8 編碼的文本。 |
OpenText |
打開現有 UTF-8 編碼文本文件以進行讀取。 |
Open |
已重載。 打開指定路徑上的 FileStream。 |
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
if (!File.Exists(path))
{
// 創建文件以便寫入內容。
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
// 打開文件從裏面讀數據。
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
try
{
string path2 = path + "temp";
// 確認將要拷貝成的文件是否已經有同名的文件存在。
File.Delete(path2);
// 拷貝文件。
File.Copy(path, path2);
Console.WriteLine("{0} was copied to {1}.", path, path2);
// 刪除新生成的文件。
File.Delete(path2);
Console.WriteLine("{0} was successfully deleted.", path2);
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
Fileinfo類的常用方法
屬性 |
說明 |
獲取或設置當前 FileSystemInfo 的 FileAttributes。(從 FileSystemInfo 繼承。) | |
獲取或設置當前 FileSystemInfo 對象的創建時間。(從 FileSystemInfo 繼承。) | |
獲取父目錄的實例。 | |
獲取表示目錄的完整路徑的字符串。 | |
已重寫。獲取指示文件是否存在的值。 | |
獲取表示文件擴展名部分的字符串。(從 FileSystemInfo 繼承。) |
下面的示例演示了 FileInfo類的一些主要屬性。
using System;
using System.IO;
class Test
{
public static void Main()
{
string fileName = "C:\\autoexec.bat";
FileInfo fileInfo = new FileInfo(fileName);
if (!fileInfo.Exists)
{
return;
}
Console.WriteLine("{0} has a directoryName of {1}",fileName,fileInfo.DirectoryName);
/* 下面是代碼的處理結果,
* 實際的結果因機器不同:
*
* C:\autoexec.bat has a directoryName of C:\
*/
}
}