深入path类

时间:2023-03-10 05:42:09
深入path类

Path类放在System.IO命名空间里。Path是一个只包含有静态方法的实例类,所以它不需要在使用之前实例化。它有各种方法用于处理文件的扩展名、文件名、根路径,以及和更多和路径相关的方面。下面就是可用方法的一个简表:

* ChangeExtension:文件扩展名被更改为新的值

* Combine:两个路径值被合并在一起

* GetDirectoryName:当前路径的目录被返回

* GetExtension:包含在路径里的文件扩展名被返回

* GetFileName:从路径返回文件名和扩展名

* GetFileNameWithoutExtension:没有扩展名的文件名被返回

* GetFullPath:完整的路径被返回

* GetPathRoot:返回路径的根目录

* GetTempFileName:字符串包含一个唯一的文件名

* GetTempPath:字符串值包含临时文件夹路径

* HasExtension:指示路径是否包含文件扩展名的布尔值

* IsPathRooted:指示路径是否包含绝对路径的布尔值

这些方法把主控权交到你的手里。他们会简化操作文件名及其路径各个方面的任务。使用示例代码能够更好地说明这些方法。下面的C#列表简要地说明了Path类的强大能力:

  1. string pth = "c://builder//test//test.txt";
  2. if (Path.HasExtension(pth))
  3. {
  4. Console.WriteLine("Path has an extension: {0}.", Path.GetExtension(pth));
  5. }
  6. else
  7. {
  8. Console.WriteLine("Path has no extension: {0}.",
  9. Path.GetFileNameWithoutExtension(pth));
  10. }
  11. if (Path.IsPathRooted(pth))
  12. {
  13. Console.WriteLine("The path contains root information: {0}.",
  14. Path.GetPathRoot(pth));
  15. }
  16. Console.WriteLine("The filename is {0}.",         Path.GetFileName(pth));
  17. Console.WriteLine("The full path is {0}.", Path.GetFullPath(pth));
  18. Console.WriteLine("The location for temporary files is {0}.",
  19. Path.GetTempPath());
  20. Console.WriteLine("The following temp file is available: {0} .",
  21. Path.GetTempFileName());
  22. Console.WriteLine("The set of invalid characters in a path is:");
  23. foreach (char c in Path.InvalidPathChars)
  24. {
  25. Console.WriteLine(c);
  26. }

路径要在一个字符串变量里设置,而Path类将它用作其代码里所有操作的基础。执行这段代码就会得到下面的结果:

The path contains root information: c:/.
The filename is test.txt.
The full path is c:/builder/test/test.txt.
The location for temporary files is C:/Windows/Temp/.
The following temp file is available: C:/Windows/Temp/tmpC7.tmp .
The set of invalid characters in a path is:
"


|

对于使用VB.NET编程的人来说,句法是类似的。下面就是VB.NET的代码:

Dim pth As String = "c://builder//test//test.txt"
Dim c As Char
If (Path.HasExtension(pth)) Then
Console.WriteLine("Path has an extension: {0}.", Path.GetExtension(pth))
Else
Console.WriteLine("Path has no extension: {0}.",
Path.GetFileNameWithoutExtension(pth))
End If
If (Path.IsPathRooted(pth)) Then
Console.WriteLine("The path contains root information: {0}.",
Path.GetPathRoot(pth))
End If
Console.WriteLine("The filename is {0}.", Path.GetFileName(pth))
Console.WriteLine("The full path is {0}.", Path.GetFullPath(pth))
Console.WriteLine("The location for temporary files is {0}.",
Path.GetTempPath())
Console.WriteLine("The following temp file is available: {0} .",
Path.GetTempFileName())
Console.WriteLine("The set of invalid characters in a path is:")
For Each c In Path.InvalidPathChars
Console.WriteLine(c)
Next c

在代码示例里,要注意Path类在使用的时候没有被实例化。它只是简单地被调用(利用正确的方法),因为它是一个带有静态方法的实例类。此外,代码的最后一部分利用了Path类的InvalidPathChars属性。现在让我们来看看其他可用的属性:

* AltDirectorySeparatorChar:用来分隔路径里目录的备用路径字符。在所有的Windows平台里它是除号(/)。

* DirectorySeparatorChar:用来分隔路径里目录的路径字符。在所有的Windows平台上是反斜杠(/)。

* InvalidPathChars:一组不被允许用在路径里的字符。

* PathSeparator:用来分隔环境变量里路径字符串的字符。在Windows平台上是分号(;)。

* VolumeSeparatorChar:用于将路径同卷分开的字符。在Windows平台上是冒号(:)。

这些属性允许你迅速和很容易地掌握平台的特性。这就让在文件路径里使用正确的分隔符并避免插入不正确的字符变容易了。这些属性能够用下面C#代码访问到,这段代码可以被加到前面的例子里:

Console.WriteLine("Directory separator: {0}.", Path.DirectorySeparatorChar);
Console.WriteLine("Volume separator: {0}.", Path.VolumeSeparatorChar);

下面就是相应的VB.NET代码:

Console.WriteLine("Directory separator: {0}.", Path.DirectorySeparatorChar)
Console.WriteLine("Volume separator: {0}.", Path.VolumeSeparatorChar)

在我的系统里,代码生成了下面的输出:

Directory separator: /.
Volume separator: :.

以上就是用于Windows平台的标准字符。