Unity中用C#遍历文件夹遍历目录完整方法
  2025/6/9 11:42:07
关键词:遍历 文件夹 遍历目录 unity 
  在Unity中用C#遍历文件夹及其子目录和文件,可用System.IO命名空间的DirectoryInfo和FileInfo类。示例代码1:
using UnityEngine;
using UnityEditor;
using System.IO;

public class FolderTraversal : MonoBehaviour
{
[MenuItem("Assets/Test")]
public static void TEST(){
  string dir = SelectAssetDirectory(); // 获取被选中文件夹的路径
  TraverseDirectory(dir);
}

private static void TraverseDirectory(string path){
  DirectoryInfo directory = new DirectoryInfo(path);
  // 获取文件夹下一层的所有子文件=======================
  FileInfo[] files = directory.GetFiles("*", SearchOption.TopDirectoryOnly);
  // 获取文件夹下一层的所有子文件夹=====================
  DirectoryInfo[] folders = directory.GetDirectories("*", SearchOption.TopDirectoryOnly);
  // 遍历所有子文件夹
  foreach (DirectoryInfo folder in folders){
   string folderPath = folder.FullName.Substring(folder.FullName.IndexOf("Assets"));
   TraverseDirectory(folderPath); // 递归遍历所有子文件夹
  }
  // 遍历所有文件
  foreach (FileInfo file in files){
   if (file.Name.EndsWith(".cs")) // 只处理脚本文件
   { Debug.Log("文件名: " + file.Name);
     Debug.Log("文件绝对路径: " + file.FullName);
     Debug.Log("文件所在目录: " + file.DirectoryName);
    }
  }
}

private static string SelectAssetDirectory()
{
  foreach (var obj in Selection.GetFiltered(SelectionMode.Assets))
  { var path = AssetDatabase.GetAssetPath(obj);
   if (string.IsNullOrEmpty(path))continue;
   if (Directory.Exists(path)) return path;// 选中的是文件夹,直接返回文件夹路径
   else if (File.Exists(path)) // 选中的是文件,返回父文件夹路径
   return Path.GetDirectoryName(path);
  }
  return "Assets";
}

}

示例代码2:
static int 遍历(string 缓存目录,string 扩展名)
{ int i=0;
    foreach (string path in Directory.GetFiles(缓存目录))
    { if (System.IO.Path.GetExtension(path) == "."+扩展名)i++; }
    return i;
}
 [1] [2]

相关文章(向右看)..

·相关
Unity中用C#遍历文件夹遍历
Unity中代码GUI绘制方法大
C4D启动后闪退的解决方法
JS基于JSON数据的几种搜索查
Unity如何使用HDRP,项目/图
C#unity定时延迟函数的常用
unity常见基础问题的原因及修
Unity Game视图不显示f
unity运行时画质低画面小怎么/图
C4D安装后开不开或打开无反应解

·热点