[C#.NET][VB.NET] System.IO 檔案系統類別 - FileInfo / DirectoryInfo / DriveInfo / Path

[C#.NET][VB.NET] System.IO 檔案系統類別 - FileInfo / DirectoryInfo / DriveInfo / Path

在System.IO有一組類別是用來操作檔案、目錄、磁碟。在C#語言下路徑指定方式有兩種,

第一種是使用兩個斜線,例如

"C:\\Test.txt"

 

第二種是在路徑前加上@符號,例如

@"C:\Test.txt"

 

但在VB語言下使用,困擾就沒有太多,就像我們一般在瀏覽磁碟一樣

"C:\Test.txt"

 

 

 

匯入命名空間System.IO

C#
using System.IO

 

VB
Imports System.IO

 

FileSystemInfo類別,提供一些基本功能給所有資訊提示的系統類別,大部份的提示類別都繼承於它,主要是為 FileInfoDirectoryInfo 物件提供基底類別。

FileInfo類別,存取及操作單一檔案基本功能,現在就來談談如何使用FileInfo類別,以下的簡易範例應該能夠讓看倌瞭解使用FileInfo類別的步驟。

EX:取得檔案資訊

        private void button1_Click(object sender, EventArgs e)
        {
            //引用類別
            FileInfo myInfo = new FileInfo(@"C:\newfile.txt");
            //判斷檔案是否存在
            if (myInfo.Exists)
            {
                //輸出檔名
                Console.WriteLine("FileName:{0}", myInfo.Name);
                //輸出路徑
                Console.WriteLine("Path:{0}", myInfo.FullName);
            }
        }

 

EX:複製檔案

        private void button2_Click(object sender, EventArgs e)
        {
            //引用類別
            FileInfo myInfo = new FileInfo(@"C:\newfile.txt");
            //判斷檔案是否存在
            if (myInfo.Exists)
            {
                //複製檔案
                myInfo.CopyTo(@"C:\newfile.bak");
            }
        }

 

DirectoryInfo類別,提供存取和操作單一目錄的基本功能

EX:列舉目錄中的檔案

        private void button3_Click(object sender, EventArgs e)
        {
            //引用類別
            DirectoryInfo myDir = new DirectoryInfo(@"C:\Windows");
            //列舉目錄中的檔案
            foreach (FileInfo myFile in myDir.GetFiles())
            {
                //輸出檔名
                Console.WriteLine("File:{0}", myFile.Name);
            }
 
        }

 

EX:列舉目錄中的子目錄

 

        private void button4_Click(object sender, EventArgs e)
        {
            //引用類別
            DirectoryInfo myDir = new DirectoryInfo(@"C:\Windows");
            //列舉目錄中的子目錄
            foreach (DirectoryInfo myFile in myDir.GetDirectories())
            {
                //輸出資料夾名
                Console.WriteLine("File:{0}", myFile.Name);
            }
        }

 

 

DriveInfo類別,提供磁區存取的資訊

EX:列舉磁區資訊

        private void button5_Click(object sender, EventArgs e)
        {
            //引用類別
            DriveInfo[] allDrives = DriveInfo.GetDrives();
            //列舉所有磁區資訊
            foreach (DriveInfo myDri in allDrives)
            {
                Console.WriteLine("磁碟名稱: {0}", myDri.Name);
                Console.WriteLine("磁碟類型: {0}", myDri.DriveType);
                //磁碟是否就緒
                if (myDri.IsReady)
                {
                    Console.WriteLine(
                        "  磁區標籤: {0}", myDri.VolumeLabel);
                    Console.WriteLine(
                        "  系統名稱: {0}", myDri.DriveFormat);
                    Console.WriteLine(
                        "  磁碟容量: {0} bytes ", myDri.TotalSize);
                    Console.WriteLine(
                        "  使用空間: {0} bytes ", myDri.TotalSize - myDri.AvailableFreeSpace);
                    Console.WriteLine(
                        "  可用空間: {0} bytes", myDri.AvailableFreeSpace);
                    
                }
            }
        }

 

  

Path類別,提供操作檔案路徑的方法

EX:由暫存區演示路徑

        private void button6_Click(object sender, EventArgs e)
        {
            //在磁碟上建立具命之零位元組的唯一暫存檔案
            //http://msdn.microsoft.com/zh-tw/library/system.io.path.gettempfilename(VS.80).aspx
            string myPath = Path.GetTempFileName();
            //string myPath = Path.GetRandomFileName();
            //引用類別
            FileInfo myInfo = new FileInfo(myPath);
            //判斷檔案是否存在
            if (myInfo.Exists)
            {
                Console.WriteLine("暫存區為 : {0}", Path.GetTempPath());
                Console.WriteLine("副檔名為 : {0}", Path.GetExtension(myPath));
                Console.WriteLine("檔案名稱 : {0}", Path.GetFileName(myPath));
                Console.WriteLine("絕對路徑 : {0}", Path.GetFullPath(myPath));
                Console.WriteLine("無副檔名 : {0}", Path.GetFileNameWithoutExtension(myPath));       
            }
        }

 

範例下載:C# System.IO.rar

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo