开发中常遇到要读取指定文件夹中的某一类文件,这时如果每次都以拼字符串地址的形式查找文件比较麻烦,分享两个读取指定文件夹中某一类文件的方法。以图片文件为例:1、以WWW方式进行加载,显示在RawImage上;2、以数据流形式读取文件,显示在RawImage上。

一、WWW加载

首先我们创建一个字典,new Dictionary<int, Texture>(),存储图片及对应编号。这里我预先将图片名批处理为从“0001”开始的连续的编号,方便处理。

现在可以开始用WWW加载文件了,注意使用WWW加载本地文件时,地址中尽量不要用中文。

    private void LoadByWWW(){string url = PlayerPrefs.GetString("imagePath");long length = GetDirectoryLength(url);for (int i = 1; i < length; i++){StartCoroutine(Load(i.ToString().PadLeft(4, '0')));Debug.Log("i.ToString().PadLeft(4, '0'):" + i.ToString().PadLeft(4, '0'));}}IEnumerator Load(string index){WWW w = new WWW(@"file:///" + PlayerPrefs.GetString("imagePath") + index + ".jpg");yield return w;int i = int.Parse(index);Debug.Log("dirArr:" + i);Debug.Log(@"file:///" + PlayerPrefs.GetString("imagePath") + index + ".jpg");dirArr.Add(i, w.texture);w.Dispose();}public long GetDirectoryLength(string dirPath){//判断给定的路径是否存在,如果不存在则退出if (!Directory.Exists(dirPath))return 0;long len = 0;//定义一个DirectoryInfo对象DirectoryInfo di = new DirectoryInfo(dirPath);//通过GetFiles方法,获取di目录中的所有文件的大小foreach (FileInfo fi in di.GetFiles()){len++;}return len;}

加载完毕后,将图片赋给RawImage即可,注意代码运行顺序,要在加载完毕后调用赋值方法,即先加载完成后显示图片。由于WWW加载需要时间,会出现没有加载完成时,执行了显示图片,此时该图片未加载,导致报错。同时要注意,加载完成后要释放资源。

二、数据流读取

数据流加载文件不过多描述,直接上代码。

    private void LoadPicture(){List<string> filePaths = new List<string>();string imgtype = "*.BMP|*.JPG|*.GIF|*.PNG";string[] ImageType = imgtype.Split('|');for (int i = 0; i < ImageType.Length; i++){//获取d盘中a文件夹下所有的图片路径  string imagePath = PlayerPrefs.GetString("imagePath");string[] dirs = Directory.GetFiles(imagePath, ImageType[i]);for (int j = 0; j < dirs.Length; j++){filePaths.Add(dirs[j]);//Debug.Log("filePaths:" + filePaths);}}for (int i = 0; i < filePaths.Count; i++){Texture2D tx = new Texture2D(100, 100);tx.LoadImage(getImageByte(filePaths[i]));allTex2d.Add(tx);}filePaths.Clear();}/// <summary>  /// 根据图片路径返回图片的字节流byte[]  /// </summary>  /// <param name="imagePath">图片路径</param>  /// <returns>返回的字节流</returns>  private static byte[] getImageByte(string imagePath){FileStream files = new FileStream(imagePath, FileMode.Open);imgByte = new byte[files.Length];files.Read(imgByte, 0, (int)files.Length);files.Close();files.Dispose();files = null;return imgByte;}

同样要注意释放资源。

获取文件夹中所有图片文件相关推荐

  1. 获取文件夹中所有文件的文件名[重复]

    本文翻译自:Getting the filenames of all files in a folder [duplicate] Possible Duplicate: 可能重复: Read all ...

  2. Python 获取文件夹中的文件列表

    获取文件夹中的文件列表 问题 你想获取文件系统中某个目录下的所有文件列表. 解决方案 使用 os.listdir() 函数来获取某个目录中的文件列表: import os names = os.lis ...

  3. Python计算机视觉读书笔记_04:获得文件夹中所有图片文件名,并生成列表

    在图像处理中,我们经常会遇到要读取文件夹中所有图片的操作,这时,我们想要获得的是带有路径的图片文件名,接下来就记录一下如何得到存放所有图片文件名的列表. 首先,我们的图片路径如下所示,我们要获得 &q ...

  4. C++读取文件夹中所有文件的路径,包含子文件夹

    C++读取文件夹中所有文件的路径,包含子文件夹 C++实现指定文件夹的路径,获取该路径下所有文件的路径,含子文件夹的文件,为了实现跨平台编译,最后会给出Window和Linux的完成程序: [1]下面 ...

  5. 使用C语言查看一个文件夹中所有文件及目录

    1.前言 1.1声明 文章中的文字可能存在语法错语以及标点错误,请谅解: 如果在文章中发现代码错误或其它问题请告知,感谢! 2.实现方法 为了使用C语言实现查看一个文件夹中的文件数量功能,可以使用di ...

  6. java 文件递归删除文件夹_Java十行代码实现递归删除文件夹中所有文件

    递归删除文件夹中所有文件 要递归首先需要有方法.递归,即方法自己调用自己.一般在程序中很少使用,但在这个实现中,我们无法知道文件夹的深度,更无法根据深度来实现循环的嵌套. 递归两个重要条件: 终止边界 ...

  7. mvfiles:一次性提取多个文件夹中的文件

      作者:吴玉轩 (南开大学) Stata 连享会: 知乎 | 简书 | 码云 | CSDN   Stata连享会 精品专题 || 精彩推文 2019暑期"实证研究方法与经典论文" ...

  8. matlab 选择文件夹、选择文件GUI和逐一读取文件夹中的文件

    matlab 选择文件夹.选择文件GUI和逐一读取文件夹中的文件 1. 选择文件夹路径: filepath = uigetdir('*.*','请选择文件夹');%fliepath为文件夹路径 2. ...

  9. 按文件名对文件夹中的文件分类

    我的文件夹中的部分文件,需要同一类的图片放在同一文件夹下(obj后面是类名). #用于获取文件夹中的文件对象.创建文件夹 import shutil #移动文件到指定文件夹中 import ospat ...

  10. VMware虚拟机文件夹中各文件作用详解

    VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...

最新文章

  1. 如何计算递归算法的时间复杂度
  2. springMVC面试问题整理一
  3. boost::serialization模块测试extended_type_info的实现,使用多个共享库时有效
  4. Oracle之用户操作
  5. 房贷利率上浮30%利息太高吃不消,如何让利率变成下浮10%?
  6. 开发Eclipse插件
  7. grandle下载安装图解
  8. C++的堆与拷贝构造函数
  9. ajax send()的作用_AJAX(Asynchronous JavaScript And XML)
  10. 电脑是否入侵,是否留有后门
  11. 事件声音和提示 注册表全攻略
  12. 信息系统项目管理师学习笔记16-项目变更管理
  13. MongoDB在Windows10上的安装配置和基本语句
  14. lol 8.21服务器维护,《LOL》8.16版本维护到几点 8月21日更新维护内容汇总
  15. 喜迎国庆中秋,双节快乐!
  16. 基于ICP算法的三维点云数据拼接算法的实现
  17. [SCTF2020]CloudDisk
  18. AI模型神预测谁是卡塔尔世界杯冠军
  19. 中电信抢滩云计算 上海开建信息银行
  20. Springboot配置MongoDB连接池

热门文章

  1. R语言编写用户自定义函数:R语言编写用户自定义函数计算变异系数(coefficient of variation)、输入为向量
  2. VS2013使用技巧汇总
  3. AOE网络-关键路径
  4. 最新电影《D战》幕后真实案件:暗夜黑客组织被端
  5. chisel线网(wire)和寄存器(reg)详解(更新)
  6. 计算机组策略主要功能,组策略的作用和功能
  7. MySQL业务账号需要哪些权限_MySQL 日常运维业务账号权限的控制
  8. 宝德自强AI智能小站 PI300T
  9. 做外贸如何免费申请企业邮箱?
  10. 如何测量智能产品的AI智商水平,论AI的三种智商