【C#】C# IO类路径合并、本地路径、拼接路径Path.Combine

推荐阅读

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

今天在开发的时候,碰到一个问题,比如说从服务器获取到路径前缀,然后拼接一个路径后缀。

在显示的时候会出现一些问题,比如说换行,或者斜杠反斜杠识别错误这种。

遇到这种情况,可以进行字符串匹配,然后对路径进行判断,看是否前后有空格,给定的路径是否是一个正确的路径

这种方式虽然也可以解决,但是总是感觉有些繁琐,查看了一些资料发现了一个API,感觉挺好用的,分享给大家。

二、Path.Combine (合并两个路径字符串)方法

2-1、重载方法

先来看重载方法:
在这里插入图片描述
参数有:path1、path2、path3、path4、string[] paths。

2-2、函数说明

以下面这个函数进行说明:

public static string Combine(string path1, string path2);

连接两个路径字符串。

详细介绍:

如果path1没有一个有效的结束分隔符,在合并之前DirectorySeparatorChar将被追加到path1。

DirectorySeparatorChar 介绍

提供平台特定的字符,该字符用于在反映分层文件系统组织的路径字符串中分隔目录级别。

该字段的值在 Unix 上为斜杠 /,在 Windows 和 Macintosh 操作系统上为反斜杠 \ 。

2-3、函数工作原理

如果 path1 不是一个驱动器引用(即不是"C:“或"D:”)
而且不是以 DirectorySeparatorChar中定义的有效分隔符结束,则在串联前将 DirectorySeparatorChar 追加到 path1 中。

如果 path2 不包括根(例如,如果 path2 没有以分隔符或驱动器规格起始)
则结果是两个路径的串联,具有介于其间的分隔符。如果 path2 包括根,则返回 path2。

由于有空白时不进行参数分析,如果 path2 为" c:\ ",则将其追加到 path1,而不是仅返回 path2。

不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的,因为您可以将这些字符用于搜索通配符。

例如,尽管 Path.Combine(“c:\”, “*.txt”) 可能是无效的(如果您要根据它创建一个文件),但它作为搜索字符串是有效的。因此 Combine 方法可以成功解释它。

2-4、函数的使用

接下来就来详细的看一下这个函数怎么使用。

正常合并两个路径字符串

using UnityEngine;
using System.IO;

public class PathTest : MonoBehaviour
{
    
    
    void Start()
    {
    
    
        string path1 = @"C:\\Test";
        string path2 = "123.txt";
        Debug.Log(Path.Combine(path1,path2));
    }
}

运行结果:
在这里插入图片描述
** 如果其中一个参数为空字符串,返回另一个参数所指定的路径。**

using UnityEngine;
using System.IO;

public class PathTest : MonoBehaviour
{
    
    
    void Start()
    {
    
    
        string path1 = "";
        string path2 = "123.txt";
        Debug.Log(Path.Combine(path1,path2));
    }
}

运行结果:
在这里插入图片描述
如果 path2 包含绝对路径,则返回 path2

using UnityEngine;
using System.IO;

public class PathTest : MonoBehaviour
{
    
    
    void Start()
    {
    
    
        string path1 = @"C:\\Test";
        string path2 = @"D:\\123.txt";
        Debug.Log(Path.Combine(path1,path2));
    }
}

运行结果:
在这里插入图片描述

如果path2 以 \ 或 / 开头,则返回 path2。

using UnityEngine;
using System.IO;

public class PathTest : MonoBehaviour
{
    
    
    void Start()
    {
    
    
        string path1 = @"C:\\Test";
        string path2 = "\\123.txt";
        Debug.Log(Path.Combine(path1,path2));
    }
}

运行结果:
在这里插入图片描述

三、后记

你的点赞就是对博主的支持,有问题记得留言:

博主主页有联系方式。

在这里插入图片描述

博主还有跟多宝藏文章等待你的发掘哦:

专栏 方向 简介
Unity3D开发小游戏 小游戏开发教程 分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。
Unity3D从入门到进阶 入门 从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。
Unity3D之UGUI UGUI Unity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。
Unity3D之读取数据 文件读取 使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。
Unity3D之数据集合 数据集合 数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。
Unity3D之VR/AR(虚拟仿真)开发 虚拟仿真 总结博主工作常见的虚拟仿真需求进行案例讲解。
Unity3D之插件 插件 主要分享在Unity开发中用到的一些插件使用方法,插件介绍等
Unity3D之日常开发 日常记录 主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等
Unity3D之日常BUG 日常记录 记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。

猜你喜欢

转载自blog.csdn.net/q764424567/article/details/126649544