#region Environment

Windows 10

Unity 2019.4.16f1c1 LTS

VSCode 1.52

https://github.com/MirzkisD1Ex0/UnityTheGreat.git

#endregion

高清大图警告!

全文左对齐警告!

进行Unity开发时,多少会遇到一些需要从外部读取资源的情况。

如果资源预先打包在Resources中还好说,干干单单的Resource.Load();就能搞定。

但是碰上在后续维护时需要替换程序中某段视频的情况,很适合把视频置于StreamingAssets中。届时也用不着重打包一份程序,只需要把新的视频文件丢进StreamingAssets中替换一下就OK了。

有时想在Unity中显示正在播放的视频的文件名可能就要用到下面的方法。

获取指定<路径>下,全部指定<后缀名>的文件的<文件名>并将其储存于数组中。

// 案例演示内容为<获取StreamingAssets/VideoStroage下所有.mp4文件的文件名>

// 数组尺寸将根据路径下有多少符合条件的文件自动决定

放了两个样本视频,位于StreamingAssets/VideoStorage下。

我们接下来把这两个文件的名字存放在String数组中,以供后续使用。

新建一个C#脚本,红圈内是路径与文件的后缀名,可根据需要自行修改。

将脚本挂载于任意对象上,运行场景,数组将根据文件数量决定自己的长度,同时将文件名分别储存在数组中。

运行后将显示结果。

下面是代码,风格比较猖獗,大佬们请自行抽取核心内容,如果有疑问记得留言或联系我yo。

#region Code↓↓↓

using UnityEngine;
using System.IO;
/// <summary>
/// 获取某个目录下指定类型的文件名
/// </summary>
public class FileNameCapture : MonoBehaviour
{
    public string[] Files; // 储存文件名的数组
    private string fileStoragePath = Application.streamingAssetsPath + "/" + "VideoStorage"; // 文件路径
    private string fileSuffix = ".mp4"; // 文件后缀名
    private void Start()
    {
        GetFileName(fileStoragePath, fileSuffix, ref Files);
    }
    /// <summary>
    /// 获取路径下全部指定类型的文件名
    /// </summary>
    /// <param name="path">路径</param>
    /// <param name="suffix">后缀名</param>
    /// <param name="files">用以存储文件名的数组</param>
    private void GetFileName(string path, string suffix, ref string[] files)
    {
        if (!Directory.Exists(path)) // 如果路径不存在 // 返回 0
        {
            return;
        }
        DirectoryInfo directoryInfo = new DirectoryInfo(path); // 获取文件信息
        FileInfo[] fileInfos = directoryInfo.GetFiles("*", SearchOption.AllDirectories);
        #region 获取文件数组尺寸
        int arraySize = 0;
        for (int i = 0; i < fileInfos.Length; i++)
        {
            if (fileInfos[i].Name.EndsWith(fileSuffix))
            {
                arraySize++;
                continue;
            }
        }
        #endregion
        files = new string[arraySize]; // 新建数组
        #region 将符合要求的文件名存至数组
        int arrayIndex = 0;
        for (int i = 0; i < fileInfos.Length; i++)
        {
            if (fileInfos[i].Name.EndsWith(fileSuffix))
            {
                files[arrayIndex++] = fileInfos[i].Name; // 把符合要求的文件名存储至数组中
                continue;
            }
        }
        #endregion
        return;
    }
}

#endregion

#region Notes

博观而约取,厚积而薄发

本教程仅为抛砖引玉之用,希望能够借此给予寻求思路的开发者们一些收获。

如果文章中出现了语混乱序、错鳖字、缺少标点符号的情况还请见谅。

因为排Word的时候我有点困。

// 现在我的脑子里就像是有两头#964B00的三边面熊举着我的室友在一个梯形的麦片盒上跳舞一样混乱。

对了,记得来我的GitHub看看。

对了对了,加我微信,我们来聊天,qq1005410781(这真的不是QQ号)。

#endregion

<UnityTheGreat><001>获取指定目录下指定类型的所有文件的名称的更多相关文章

  1. delphi遍历指定目录下指定类型文件的函数

    遍历指定目录下指定类型文件的函数// ================================================================// 遍历某个文件夹下某种文件,/ ...

  2. Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例

    1. 复制指定目录下指定后缀名的文件并修改名称的案例     需求:复制指定目录下的指定文件,并修改后缀名.  • 指定的文件是:.java文件.     • 指定的后缀名是:.jad     • 指 ...

  3. JAVA输出指定目录下的子目录和子文件

    题目:给定一个目录,要求输出这个目录下面的子目录和子文件 逻辑: 先判断给定的是不是一个合法的目录,如果不是,则提示给定错误 如果是目录,那么使用File.listFile()获得这个目录下文件名的数 ...

  4. linux 中 如何 搜索 指定目录 下 指定文件 的 指定内容

    开发时,经常遇到 全局查找某些代码 linux 中 如何 检索 某 目录下指定文件 的 指定内容如下: //.点为查找当前目录 下 的 所有 *.php 文件里 有 hello 的文件 find . ...

  5. 运维笔记--Linux查找指定目录下某段时间的文件

    查找指定目录下,60天之前的文件:find /mnt/xml_data -mtime +60 -name "*.xml" 找到并统计数量:find /mnt/xml_data -m ...

  6. [bash]查找指定目录下符合格式的txt文件

    需求: 查找指定目录下符合yyyy-MM-dd(-b)NNN.txt格式的文件,如“2020-03-22-b888.txt” 目标目录内容: [root@localhost bashs]# ll /r ...

  7. Java基础知识强化之IO流笔记10:File类输出指定目录下指定后缀名的文件名称案例(File类的文件过滤器方法改进list( FilenameFilter ff))

    1. 案例: 判断F盘下是否有后缀名为.jpg的文件,如果有的话,就输出这个文件名. 2. 案例代码如下: (1)思路是:先获取所有的文件和文件夹封装的对象,然后遍历的时候,依次判断,如果满足条件就输 ...

  8. windows 批处理删除指定目录下 指定类型 指定天数之前文件

    删除D:\test下5天前所有文件,如下: @echo offset SrcDir=D:\testset DaysAgo=5forfiles /p %SrcDir% /s /m *.* /d -%Da ...

  9. OpenCV代码提取:遍历指定目录下指定文件的实现

    前言 OpenCV 3.1之前的版本,在contrib目录下有提供遍历文件的函数,用起来比较方便.但是在最新的OpenCV 3.1版本给去除掉了.为了以后使用方便,这里将OpenCV 2.4.9中相关 ...

随机推荐

  1. PDF文档工具:pdfFactory快照功能详解

    pdfFactory的快照功能,是通过一种类似截图的方式,将文档中的内容,如标题.图片.段落.文字等进行剪切的功能.剪切后的内容会转化为文本框的形式,我们可以对其进行加边框.旋转等编辑处理,但不能对其 ...

  2. jQuery 第三章 CSS操作

    .css() .attr() .prop() .css() 参数填法:如下所示 ↓  可填px 可不填,注意点:background-color  这类属性,需要填成 小驼峰式  background ...

  3. [工具推荐]制作基于Dash的本地文档方便搜索文档api和内容

    [版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 最近在看es的文档,发现查起api来真的很麻烦,很多现在开源的文档都没有查询 ...

  4. Java之 循环(三)

    1. switch语句 1.1 分支语句switch语句 格式 switch (表达式) { case 1: 语句体1; break; case 2: 语句体2; break; ... default ...

  5. SpringBoot---WebMvcConfigurer详解

    1. 简介 2. WebMvcConfigurer接口 2.1 addInterceptors:拦截器 2.2 addViewControllers:页面跳转 2.3 addResourceHandl ...

  6. Spring Boot中的配置

    一.首先使用idea中的Spring Initializr快速创建一个SpringBoot应用,idea会联网自动创建,创建好的结构如下(一些没必要的文件都删了): 其中说一下几个文件夹和文件 sta ...

  7. 完全图的最短Hamilton路径——状压dp

    题意:给出一张含有n(n<20)个点的完全图,求从0号节点到第n-1号节点的最短Hamilton路径.Hamilton路径是指不重不漏地经过每一个点的路径. 算法进阶上的一道状压例题,复杂度为O ...

  8. nameServer路由发现

    RocketMQ路由发现是非实时的,当Topic路由出现变化时,NameServer不主动推动给客户端,而是客户端定时拉取主题最新的路由 总结: topic路由的是brokername

  9. 【mq读书笔记】消息确认(失败消息,定时队列重新消费)

    接上文的集群模式,监听器返回RECONSUME_LATER,需要将将这些消息发送给Broker延迟消息.如果发送ack消息失败,将延迟5s后提交线程池进行消费. 入口:ConsumeMessageCo ...

  10. Dotnet Core下的Channel, 你用了吗?

    今天给大家分享一个微软官方的好东西:Channel.   前言 今天给大家分享一个微软官方的生产者/消费者方案的特性解决:Channel. Channel在System.Threading.Chann ...