﻿# 如何利用 .NET 檢查某「路徑字串」是檔案或目錄

這好像不是什麼有意義的題目，雖然我知道有 [File.Exists](http://msdn.microsoft.com/zh-tw/library/system.io.file.exists.aspx) 與 [Directory.Exists](http://msdn.microsoft.com/zh-tw/library/system.io.directory.exists.aspx) 可用，只是我昨天心血來潮想找找 .NET Framework 中是否有檢查某「路徑字串」是「檔案」或「目錄」的方法(Method)，一開始先猜想 [Path](http://msdn.microsoft.com/zh-tw/library/system.io.path.aspx) 類別是否有相關的 Method，但找不到。

如果你今天得到一個「路徑字串」，光從字串中是無法判定這是檔案或目錄的，「檔案」通常都有副檔名，但也可以沒有；而「目錄」通常都沒有副檔名，但也可以有。所以無論如何都需要有個判斷方法。

既然找不到簡單的方法，就必須用傳統的方法判斷，如下範例：

```
if (File.Exists(strPath))
{
    // 有效的檔案
}
else if (Directory.Exists(strPath))
{
    // 有效的目錄
}
else
{
    // 無效的路徑(檔案或目錄不存在)或沒有讀取權限。
}
```

我們在判斷路徑字串時，大多時候得到的路徑字串都是檔案居多，所以應該先判斷「是否為檔案」，然後再判斷「是否為目錄」，當兩者條件都不成立時，就代表該路徑不存在，或該路徑沒有讀取權限。

至於對檔案或目錄的操作，可以多參考以下類別的 MSDN 文件說明：

-   [Path 類別](http://msdn.microsoft.com/zh-tw/library/system.io.path.aspx)
-   [File 類別](http://msdn.microsoft.com/zh-tw/library/system.io.file.aspx)
-   [FileInfo 類別](http://msdn.microsoft.com/zh-tw/library/system.io.fileinfo.aspx)
-   [Directory 類別](http://msdn.microsoft.com/zh-tw/library/system.io.directory.aspx)
-   [DirectoryInfo 類別](http://msdn.microsoft.com/zh-tw/library/system.io.directoryinfo.aspx)
-   [FileSystemInfo 類別](http://msdn.microsoft.com/zh-tw/library/system.io.filesysteminfo.aspx)
-   [FileSystemInfo.Attributes 屬性](http://msdn.microsoft.com/zh-tw/library/system.io.filesysteminfo.attributes.aspx)
-   [FileAttributes 列舉型別](http://msdn.microsoft.com/zh-tw/library/system.io.fileattributes.aspx)
