Unity中用C#遍历文件夹遍历目录完整方法
2025/6/9 11:42:07
关键词:遍历 文件夹 遍历目录 unity
2025/6/9 11:42:07
关键词:遍历 文件夹 遍历目录 unity
在Unity中用C#遍历文件夹及其子目录和文件,可用System.IO命名空间的DirectoryInfo和FileInfo类。示例代码1:
示例代码2: [1] [2]
相关文章(向右看)..
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;
}
相关文章(向右看)..