C#路徑中獲取文件全路徑、目錄、擴展名、文件名稱
常用函數 需要引用System.IO 直接可以調用Path的靜態方法
轉自 https://www.cnblogs.com/JiYF/p/6879139.html
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 6 //獲取當前運行程序的目錄 7 string fileDir = Environment.CurrentDirectory; 8 Console.WriteLine("當前程序目錄:"+fileDir); 9 10 //一個文件目錄 11 string filePath = "C:\\JiYF\\BenXH\\BenXHCMS.xml"; 12 Console.WriteLine("該文件的目錄:"+filePath); 13 14 string str = "獲取文件的全路徑:" + Path.GetFullPath(filePath); //-->C:\JiYF\BenXH\BenXHCMS.xml 15 Console.WriteLine(str); 16 str = "獲取文件所在的目錄:" + Path.GetDirectoryName(filePath); //-->C:\JiYF\BenXH 17 Console.WriteLine(str); 18 str = "獲取文件的名稱含有后綴:" + Path.GetFileName(filePath); //-->BenXHCMS.xml 19 Console.WriteLine(str); 20 str = "獲取文件的名稱沒有后綴:" + Path.GetFileNameWithoutExtension(filePath); //-->BenXHCMS 21 Console.WriteLine(str); 22 str = "獲取路徑的后綴擴展名稱:" + Path.GetExtension(filePath); //-->.xml 23 Console.WriteLine(str); 24 str = "獲取路徑的根目錄:" + Path.GetPathRoot(filePath); //-->C:\ 25 Console.WriteLine(str); 26 Console.ReadKey(); 27 28 } 29 }
程序在桌面運行
Path類介紹
1 #region 程序集 mscorlib.dll, v4.0.0.0 2 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll 3 #endregion 4 5 using System; 6 using System.Runtime.InteropServices; 7 using System.Security; 8 using System.Text; 9 10 namespace System.IO 11 { 12 // 摘要: 13 // 對包含文件或目錄路徑信息的 System.String 實例執行操作。這些操作是以跨平台的方式執行的。 14 [ComVisible(true)] 15 public static class Path 16 { 17 // 摘要: 18 // 提供平台特定的替換字符,該替換字符用於在反映分層文件系統組織的路徑字符串中分隔目錄級別。 19 public static readonly char AltDirectorySeparatorChar; 20 // 21 // 摘要: 22 // 提供平台特定的字符,該字符用於在反映分層文件系統組織的路徑字符串中分隔目錄級別。 23 public static readonly char DirectorySeparatorChar; 24 // 25 // 摘要: 26 // 提供平台特定的字符數組,這些字符不能在傳遞到 System.IO.Path 類的成員的路徑字符串參數中指定。 27 // 28 // 返回結果: 29 // 當前平台的無效路徑字符的字符數組。 30 [Obsolete("Please use GetInvalidPathChars or GetInvalidFileNameChars instead.")] 31 public static readonly char[] InvalidPathChars; 32 // 33 // 摘要: 34 // 用於在環境變量中分隔路徑字符串的平台特定的分隔符。 35 public static readonly char PathSeparator; 36 // 37 // 摘要: 38 // 提供平台特定的卷分隔符。 39 public static readonly char VolumeSeparatorChar; 40 41 // 摘要: 42 // 更改路徑字符串的擴展名。 43 // 44 // 參數: 45 // path: 46 // 要修改的路徑信息。該路徑不能包含在 System.IO.Path.GetInvalidPathChars() 中定義的任何字符。 47 // 48 // extension: 49 // 新的擴展名(有或沒有前導句點)。指定 null 以從 path 移除現有擴展名。 50 // 51 // 返回結果: 52 // 包含修改的路徑信息的字符串。在基於 Windows 的桌面平台上,如果 path 是 null 或空字符串 (""),則返回的路徑信息是未修改的。如果 53 // extension 是 null,則返回的字符串包含指定的路徑,其擴展名已移除。如果 path 不具有擴展名,並且 extension 不是 null,則返回的路徑字符串包含 54 // extension,它追加到 path 的結尾。 55 // 56 // 異常: 57 // System.ArgumentException: 58 // path 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 59 public static string ChangeExtension(string path, string extension); 60 // 61 // 摘要: 62 // 將字符串數組組合成一個路徑。 63 // 64 // 參數: 65 // paths: 66 // 由路徑的各部分構成的數組。 67 // 68 // 返回結果: 69 // 包含合並的路徑的字符串。 70 // 71 // 異常: 72 // System.ArgumentException: 73 // 數組中的一個字符串包含 System.IO.Path.GetInvalidPathChars() 中定義的一個或多個無效字符。 74 // 75 // System.ArgumentNullException: 76 // 數組中的一個字符串為 null。 77 public static string Combine(params string[] paths); 78 // 79 // 摘要: 80 // 將兩個字符串組合成一個路徑。 81 // 82 // 參數: 83 // path1: 84 // 要組合的第一個路徑。 85 // 86 // path2: 87 // 要組合的第二個路徑。 88 // 89 // 返回結果: 90 // 包含合並的路徑的字符串。如果指定的路徑之一是零長度字符串,則該方法返回其他路徑。如果 path2 包含絕對路徑,則該方法返回 path2。 91 // 92 // 異常: 93 // System.ArgumentException: 94 // path1 或 path2 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 95 // 96 // System.ArgumentNullException: 97 // path1 或 path2 為 null。 98 public static string Combine(string path1, string path2); 99 // 100 // 摘要: 101 // 將三個字符串組合成一個路徑。 102 // 103 // 參數: 104 // path1: 105 // 要組合的第一個路徑。 106 // 107 // path2: 108 // 要組合的第二個路徑。 109 // 110 // path3: 111 // 要組合的第三個路徑。 112 // 113 // 返回結果: 114 // 包含合並的路徑的字符串。 115 // 116 // 異常: 117 // System.ArgumentException: 118 // path1、path2 或 path3 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 119 // 120 // System.ArgumentNullException: 121 // path1、path2 或 path3 為 null。 122 public static string Combine(string path1, string path2, string path3); 123 // 124 // 摘要: 125 // 將四個字符串組合成一個路徑。 126 // 127 // 參數: 128 // path1: 129 // 要組合的第一個路徑。 130 // 131 // path2: 132 // 要組合的第二個路徑。 133 // 134 // path3: 135 // 要組合的第三個路徑。 136 // 137 // path4: 138 // 要組合的第四個路徑。 139 // 140 // 返回結果: 141 // 包含合並的路徑的字符串。 142 // 143 // 異常: 144 // System.ArgumentException: 145 // path1、path2、path3 或 path4 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 146 // 147 // System.ArgumentNullException: 148 // path1、path2、path3 或 path4 為 null。 149 public static string Combine(string path1, string path2, string path3, string path4); 150 // 151 // 摘要: 152 // 返回指定路徑字符串的目錄信息。 153 // 154 // 參數: 155 // path: 156 // 文件或目錄的路徑。 157 // 158 // 返回結果: 159 // 包含 path 目錄信息的 System.String;或者為 null(如果 path 表示根目錄、是空字符串 ("") 或是 null)。如果 160 // path 沒有包含目錄信息,則返回 System.String.Empty。 161 // 162 // 異常: 163 // System.ArgumentException: 164 // path 參數包含無效字符、為空、或僅包含空白。 165 // 166 // System.IO.PathTooLongException: 167 // path 參數的長度超過系統定義的最大長度。 168 [SecuritySafeCritical] 169 public static string GetDirectoryName(string path); 170 // 171 // 摘要: 172 // 返回指定的路徑字符串的擴展名。 173 // 174 // 參數: 175 // path: 176 // 從其獲取擴展名的路徑字符串。 177 // 178 // 返回結果: 179 // 包含指定路徑的擴展名(包括“.”)的 System.String、null 或 System.String.Empty。如果 path 為 null,則 180 // GetExtension 返回 null。如果 path 不具有擴展名信息,則 GetExtension 返回 Empty。 181 // 182 // 異常: 183 // System.ArgumentException: 184 // path 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 185 public static string GetExtension(string path); 186 // 187 // 摘要: 188 // 返回指定路徑字符串的文件名和擴展名。 189 // 190 // 參數: 191 // path: 192 // 從其獲取文件名和擴展名的路徑字符串。 193 // 194 // 返回結果: 195 // 一個 System.String,由 path 中最后的目錄字符后的字符組成。如果 path 的最后一個字符是目錄或卷分隔符,則此方法返回 System.String.Empty。如果 196 // path 為 null,則此方法返回 null。 197 // 198 // 異常: 199 // System.ArgumentException: 200 // path 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 201 public static string GetFileName(string path); 202 // 203 // 摘要: 204 // 返回不具有擴展名的指定路徑字符串的文件名。 205 // 206 // 參數: 207 // path: 208 // 文件的路徑。 209 // 210 // 返回結果: 211 // 包含由 System.IO.Path.GetFileName(System.String) 返回的字符串的 System.String,但不包括最后的句點 212 // (.) 和該句點后的所有字符。 213 // 214 // 異常: 215 // System.ArgumentException: 216 // path 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 217 public static string GetFileNameWithoutExtension(string path); 218 // 219 // 摘要: 220 // 返回指定路徑字符串的絕對路徑。 221 // 222 // 參數: 223 // path: 224 // 要為其獲取絕對路徑信息的文件或目錄。 225 // 226 // 返回結果: 227 // 包含 path 的完全限定位置的字符串,例如“C:\MyFile.txt”。 228 // 229 // 異常: 230 // System.ArgumentException: 231 // path 是一個零長度字符串,僅包含空白或者包含 System.IO.Path.GetInvalidPathChars() 中已定義一個或多個無效字符。- 232 // 或 -系統未能檢索絕對路徑。 233 // 234 // System.Security.SecurityException: 235 // 調用方沒有所需的權限。 236 // 237 // System.ArgumentNullException: 238 // path 為 null。 239 // 240 // System.NotSupportedException: 241 // path 包含一個冒號(“:”),此冒號不是卷標識符(如,“c:\”)的一部分。 242 // 243 // System.IO.PathTooLongException: 244 // 指定的路徑、文件名或者兩者都超出了系統定義的最大長度。例如,在基於 Windows 的平台上,路徑必須小於 248 個字符,文件名必須小於 260 245 // 個字符。 246 [SecuritySafeCritical] 247 public static string GetFullPath(string path); 248 // 249 // 摘要: 250 // 獲取包含不允許在文件名中使用的字符的數組。 251 // 252 // 返回結果: 253 // 包含不允許在文件名中使用的字符的數組。 254 public static char[] GetInvalidFileNameChars(); 255 // 256 // 摘要: 257 // 獲取包含不允許在路徑名中使用的字符的數組。 258 // 259 // 返回結果: 260 // 包含不允許在路徑名中使用的字符的數組。 261 public static char[] GetInvalidPathChars(); 262 // 263 // 摘要: 264 // 獲取指定路徑的根目錄信息。 265 // 266 // 參數: 267 // path: 268 // 從其獲取根目錄信息的路徑。 269 // 270 // 返回結果: 271 // 一個包含 path 的根目錄的字符串,例如“C:\”;如果 path 為 null,則為 null;如果 path 不包含根目錄信息,則為空字符串。 272 // 273 // 異常: 274 // System.ArgumentException: 275 // path 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。- 或 -System.String.Empty 276 // 被傳遞到 path。 277 [SecuritySafeCritical] 278 public static string GetPathRoot(string path); 279 // 280 // 摘要: 281 // 返回隨機文件夾名或文件名。 282 // 283 // 返回結果: 284 // 隨機文件夾名或文件名。 285 public static string GetRandomFileName(); 286 // 287 // 摘要: 288 // 創建磁盤上唯一命名的零字節的臨時文件並返回該文件的完整路徑。 289 // 290 // 返回結果: 291 // 包含臨時文件的完整路徑的 System.String。 292 // 293 // 異常: 294 // System.IO.IOException: 295 // 發生 I/O 錯誤,例如沒有提供唯一的臨時文件名。- 或 -此方法無法創建臨時文件。 296 [SecuritySafeCritical] 297 public static string GetTempFileName(); 298 // 299 // 摘要: 300 // 返回當前系統的臨時文件夾的路徑。 301 // 302 // 返回結果: 303 // 包含臨時目錄的路徑信息的 System.String。 304 // 305 // 異常: 306 // System.Security.SecurityException: 307 // 調用方沒有所需的權限。 308 [SecuritySafeCritical] 309 public static string GetTempPath(); 310 // 311 // 摘要: 312 // 確定路徑是否包括文件擴展名。 313 // 314 // 參數: 315 // path: 316 // 用於搜索擴展名的路徑。 317 // 318 // 返回結果: 319 // 如果路徑中最后的目錄分隔符(\\ 或 /)或卷分隔符 (:) 之后的字符包括句點 (.),並且后面跟有一個或多個字符,則為 true;否則為 false。 320 // 321 // 異常: 322 // System.ArgumentException: 323 // path 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 324 public static bool HasExtension(string path); 325 // 326 // 摘要: 327 // 獲取一個值,該值指示指定的路徑字符串是包含絕對路徑信息還是包含相對路徑信息。 328 // 329 // 參數: 330 // path: 331 // 要測試的路徑。 332 // 333 // 返回結果: 334 // 如果 path 包含絕對路徑,則為 true;否則為 false。 335 // 336 // 異常: 337 // System.ArgumentException: 338 // path 包含 System.IO.Path.GetInvalidPathChars() 中已定義的一個或多個無效字符。 339 public static bool IsPathRooted(string path); 340 } 341 }