WIn_RustTools/Editor/EditorLoad.cs

65 lines
1.8 KiB
C#
Raw Permalink Normal View History

2024-08-15 01:40:33 +00:00
using System.Collections.ObjectModel;
using System.Diagnostics;
2024-08-09 07:05:40 +00:00
namespace RustTools.Editor;
public class EditorLoad
{
/// <summary>
/// 获取目录下的文件和文件夹
2024-08-09 07:05:40 +00:00
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
public static ObservableCollection<FileItem> GetData(string dir)
2024-08-09 07:05:40 +00:00
{
var list = new ObservableCollection<FileItem>();
2024-08-09 07:05:40 +00:00
var directoryInfos = new DirectoryInfo(dir);
//获取文件夹
2024-08-15 01:40:33 +00:00
foreach (var file in directoryInfos.GetDirectories())
{
var explorerItem = new FileItem(true)
2024-08-09 07:05:40 +00:00
{
Name = file.Name,
Dir = file.FullName,
};
//检测是否有子文件
if (HasChildren(file.FullName))
2024-08-09 07:05:40 +00:00
{
explorerItem.Children.Add(new FileItem());
2024-08-09 07:05:40 +00:00
}
list.Add(explorerItem);
2024-08-09 07:05:40 +00:00
}
//获取文件
2024-08-09 07:05:40 +00:00
foreach (var file in directoryInfos.GetFiles())
{
list.Add(new FileItem()
2024-08-09 07:05:40 +00:00
{
Name = file.Name,
Dir = file.FullName,
IsFolder = false,
2024-08-09 07:05:40 +00:00
});
}
return list;
}
private static bool HasChildren(string path)
{
try
{
// 检查是否有子目录或子文件
return Directory.EnumerateDirectories(path).Any() || Directory.EnumerateFiles(path).Any();
}
catch (UnauthorizedAccessException)
{
// 捕获权限异常(例如无法访问某些系统文件夹)
return false;
}
catch (Exception ex)
{
Debug.WriteLine($"Error checking children for path {path}: {ex.Message}");
return false;
}
}
2024-08-09 07:05:40 +00:00
}