目录
一.相对路径和绝对路径
了解Path之前 首先需要了解一下 绝对路径和相对路径
相对路径:当前程序运行所在的路径。
绝对路径:文件在计算机的完整路径。
例如:
C:\Users\source\repos\LudwigIO\LudwigIO\bin\Debug\LudwigIO.exe 这个就是绝对路径
绝对路径完全指定位置:无论当前位置如何,都可以唯一标识文件或目录。
而 .\bin\Debug\LudwigIO.exe 就是相对路径
相对路径指定部分位置:定位使用相对路径指定的文件时,当前位置用作起点。
二.特点
1.Path是一个静态类
2.类的 Path 字段以及类的某些成员 Path 的确切行为依赖于平台
3.类的 Path 大多数成员不会与文件系统交互,并且不验证路径字符串指定的文件是否存在。
4. Path 修改路径字符串的类成员(例如 ChangeExtension)对文件系统中的文件名称没有影响。
三.方法:
public string path = "G://111//1.png";
此 path供以下示例使用
ChangeExtension(String, String)
更改路径字符串的扩展名。
public void ChangeExtension() {
string _path = Path.ChangeExtension(path, "jpg");
Console.WriteLine($"新的拓展名:{_path}");
}
注:这个方法并不会真的改变我的文件后缀名,只是得到了一个新的路径
Combine(String, String)
将两个字符串组合成一个路径。
Combine(String, String, String)
将三个字符串组合成一个路径。
Combine(String, String, String, String)
将四个字符串组合成一个路径。
Combine(String[])
将字符串数组组合成一个路径。
public void Combine() {
string _path = Path.Combine(path, "jpg");
Console.WriteLine($"路径连接:{_path}");
}
注:路径链接只是得到一个拼接路径并不代表真的有这个路径
GetDirectoryName(ReadOnlySpan<Char>)
返回由字符范围表示的指定路径的目录信息。
GetDirectoryName(String)
返回指定路径的目录信息。
public void GetDirectoryName() {
string _path = Path.GetDirectoryName(path);
Console.WriteLine($"获取文件路径:{_path}");
}
GetExtension(ReadOnlySpan<Char>)
返回由只读字符范围表示的文件路径的扩展名。
GetExtension(String)
返回指定路径字符串的扩展名(包括句点“.”)。
public void GetExtension() {
string _path = Path.GetExtension(path);
Console.WriteLine($"获取文件后缀名:{_path}");
}
GetFileName(ReadOnlySpan<Char>)
返回由只读字符范围表示的文件路径的文件名和扩展名。
GetFileName(String)
返回指定路径字符串的文件名和扩展名。
public void GetFileName() {
string _path = Path.GetFileName(path);
Console.WriteLine($"获取文件名+拓展名:{_path}");
}
GetFileNameWithoutExtension(ReadOnlySpan<Char>)
返回文件名,该文件名不带由只读字符范围表示的文件路径扩展名。
GetFileNameWithoutExtension(String)
返回不具有扩展名的指定路径字符串的文件名。
public void GetFileNameWithoutExtension() {
string _path = Path.GetFileNameWithoutExtension(path);
Console.WriteLine($"获取文件名 不加 拓展名:{_path}");
}
GetFullPath(String)
返回指定路径字符串的绝对路径。
GetFullPath(String, String)
从完全限定的基路径和相对路径返回绝对路径。
public void GetFullName() {
string fileName = "myfile.ext";
string path1 = @"mydir";
string path2 = @"\mydir";
string _path = Path.GetFullPath(fileName);
Console.WriteLine($"获取全部路径1:{_path}");
_path = Path.GetFullPath(path1);
Console.WriteLine($"获取全部路径2:{_path}");
_path = Path.GetFullPath(path2);
Console.WriteLine($"获取全部路径3:{_path}");
}
注:不用 \ 修饰的路径会取到当前程序运行路径+传入路径的拼接(绝对路径)
带有 \ 的路径返回的是当前输入(相对路径)
同样 输出的路径 不代表当前真的存在这个路径
GetInvalidFileNameChars()
获取包含不允许在文件名中使用的字符的数组。
public void GetInvalidFileNameChars() {
char[] invalidFileNameChars = Path.GetInvalidFileNameChars();
string _all = string.Join("", invalidFileNameChars);
Console.WriteLine($"不允许在文件名中使用的字符的数组 :{_all}");
}
有些乱码 没有深究 有兴趣的可以研究一下
GetInvalidPathChars()
获取包含不允许在路径名中使用的字符的数组。
public void GetInvalidPathChars() {
char[] invalidPathChars = Path.GetInvalidPathChars();
string _all = string.Join("", invalidPathChars);
Console.WriteLine($"不允许在路径中使用的字符的数组 :{_all}");
}
有些乱码 没有深究 有兴趣的可以研究一下
GetPathRoot(ReadOnlySpan<Char>)
从指定字符范围包含的路径中获取根目录信息。
GetPathRoot(String)
从指定字符串包含的路径中获取根目录信息。
public void GetPathRoot() {
string _pathRoot = Path.GetPathRoot(path);
Console.WriteLine($"获取根目录:{_pathRoot}");
string _pathRoot1 = Path.GetPathRoot(@".\1.png");
Console.WriteLine($"获取根目录:{_pathRoot1}");
string _pathRoot2 = Path.GetPathRoot(@"\1.png");
Console.WriteLine($"获取根目录:{_pathRoot2}");
string _pathRoot3 = Path.GetPathRoot(Path.GetFullPath(@"\1.png"));
Console.WriteLine($"获取根目录:{_pathRoot3}");
}
注:相对路经无法取到根目录 绝对路径可以
GetRandomFileName()
返回随机文件夹名或文件名。
public void GetRandomFileName() {
string randomFileName = Path.GetRandomFileName();
Console.WriteLine($"获取随机文件名:{randomFileName}");
}
注:并不存在该文件 只是给你随机一个名字出来
GetTempFileName()
在磁盘上创建一个唯一命名的零字节临时文件,并返回该文件的完整路径。
public void GetTempFileName() {
string tempFileName = Path.GetTempFileName();
Console.WriteLine($"获取临时文件路径:{tempFileName}");
}
注:真实存在的文件
GetTempPath()
返回当前用户的临时文件夹的路径。
public void GetTempPath() {
string tempPath = Path.GetTempPath();
Console.WriteLine($"获取临时文件夹路径{tempPath}");
}
HasExtension(ReadOnlySpan<Char>)
确定指定字符范围表示的路径是否包含文件扩展名。
HasExtension(String)
确定路径是否包括文件扩展名。
public void HasExtension() {
string tempPath = @".\1.png";
bool has = Path.HasExtension(tempPath);
Console.WriteLine($"是否包含后缀名:{has}");
string tempPath2 = @".\1\";
bool has1 = Path.HasExtension(tempPath2);
Console.WriteLine($"是否包含后缀名:{has1}");
}
IsPathRooted(ReadOnlySpan<Char>)
返回一个值,该值指示表示文件路径的指定字符范围是否包含根。
IsPathRooted(String)
返回一个值,该值指示指定的路径字符串是否包含根。
public void IsPathRooted() {
string tempPath = @".\1.png";
bool has = Path.IsPathRooted(tempPath);
Console.WriteLine($"是否包含根:{has}");
string tempPath2 = @"G:\111\1.png";
bool has1 = Path.IsPathRooted(tempPath2);
Console.WriteLine($"是否包含根:{has1}");
}