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

恬静的小魔龙 发表于 2022/09/03 00:45:37 2022/09/03
【摘要】 推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得...

推荐阅读

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新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));
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

using UnityEngine;
using System.IO;

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

运行结果:
在这里插入图片描述
如果 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));
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

如果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));
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

三、后记

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

博主主页有联系方式。

在这里插入图片描述

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

专栏 方向 简介
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和坑,让后来人可以有些参考。

文章来源: itmonon.blog.csdn.net,作者:恬静的小魔龙,版权归原作者所有,如需转载,请联系作者。

原文链接:itmonon.blog.csdn.net/article/details/126649544

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。