【解答】
文件(file)和流(stream)即有區別又有聯系。文件是在各種媒質上(可移動磁盤、硬盤、CD 等)永久存儲的數據的有序集合。它是一種進行數據讀寫操作的基本對象。通常情況下,文件按照樹狀目錄進行組織,每個文件都有文件名、文件所在路徑、創建時間、訪問權限等屬性。
流是字節序列的抽象概念,例如文件、輸入輸出設備、內部進程通信管道或者TCP/IP套接字等均可以看成流。流提供一種向後備存儲器寫入字節和從後備存儲器讀取字節的方式。
2. Directory類為我們提供了哪些目錄管理的功能,它們是通過哪些方法來實現的?
【解答】
Directory類為我們提供了對磁盤和目錄進行管理的功能,如復制、移動、重命名、創建和刪除目錄,獲取和設置與目錄的創建、訪問及寫入操作相關的時間信息。
如:CreateDirectory方法用於創建指定路徑中的所有目錄;Delete方法用於刪除指定的目錄;Move方法能夠重命名或移動目錄;Exists方法用於確定給定路徑是否引用磁盤上的現有目錄;GetCurrentDirectory方法用於獲取應用程序的當前工作目錄;GetFiles方法用於返回指定目錄中的文件的名稱等。
3. 編寫程序綜合應用Directory類的主要方法。首先確定指定的目錄是否存在,如果存在,則刪除該目錄;如果不存在,則創建該目錄。然後,移動此目錄,在其中創建一個文件,並對文件進行計數。
【解答】
程序清單如下:
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\MyDir";
string target = @"c:\TestDir";
try
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
if (Directory.Exists(target))
{
Directory.Delete(target, true);
}
Directory.Move(path, target);
File.CreateText(target + @"\myfile.txt");
Console.WriteLine("在{0}中的文件數目是{1}",
target, Directory.GetFiles(target).Length);
}
catch (Exception e)
{
Console.WriteLine("操作失敗: {0}", e.ToString());
}
finally {}
}
}
4. 編寫程序,將文件復制到指定路徑,允許改寫同名的目標文件。
【解答】
程序清單如下:
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
string path2 = path + "temp";
try
{
using (FileStream fs = File.Create(path)) {}
File.Delete(path2);
File.Copy(path, path2);
Console.WriteLine("{0}拷貝到:{1}", path, path2);
File.Copy(path, path2, true);
Console.WriteLine("第二次拷貝成功");
}
catch
{
Console.WriteLine("重復拷貝不允許");
}
}
}
5. 編寫程序,使用File類實現刪除當前目錄下的所有文件。
【解答】
程序清單如下:
using System;
using System.IO;
class FileTest
{
public static void Main()
{
Console.WriteLine("確認刪除當前目錄下的所有文件?");
Console.WriteLine("點擊'Y'鍵繼續,其它鍵取消操作");
int a = Console.Read();
if(a == 'Y' || a == 'y'){
Console.WriteLine("正在刪除文件...");
}
else
{
Console.WriteLine("用戶取消操作");
return;
}
DirectoryInfo dir = new DirectoryInfo (".");
foreach (FileInfo f in dir.GetFiles())
{
f.Delete();
}
}
}