C# I/O 文件和目录一 : Path

目录

一.相对路径和绝对路径

二.特点

三.方法:


一.相对路径和绝对路径

了解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}");
    }

 

猜你喜欢

转载自blog.csdn.net/SmillCool/article/details/127414515