Implement GetAllObjects() to return both files and folders

This commit is contained in:
Michael Becker 2015-04-29 12:55:50 -04:00
parent 609bbccf0c
commit 89b6d41a0c

View File

@ -338,5 +338,43 @@ namespace UniversalEditor.ObjectModels.FileSystem
GetAllFilesRecursively(folder1, ref files, parentPath + pathSeparator + folder1.Name, pathSeparator, searchPattern);
}
}
public IFileSystemObject[] GetAllObjects(string pathSeparator = null)
{
if (pathSeparator == null) pathSeparator = "/";
List<IFileSystemObject> files = new List<IFileSystemObject>();
for (int i = 0; i < mvarFiles.Count; i++)
{
File file = mvarFiles[i];
files.Add(file);
}
for (int i = 0; i < mvarFolders.Count; i++)
{
Folder folder = mvarFolders[i];
files.Add(folder);
GetAllObjectsRecursively(folder, ref files, folder.Name, pathSeparator);
}
return files.ToArray();
}
private void GetAllObjectsRecursively(Folder folder, ref List<IFileSystemObject> files, string parentPath, string pathSeparator, string searchPattern = null)
{
for (int i = 0; i < folder.Files.Count; i++)
{
File file = folder.Files[i];
if (searchPattern != null && !file.Name.Match(searchPattern)) continue;
File file2 = (file.Clone() as File);
file2.Name = parentPath + pathSeparator + file.Name;
files.Add(file2);
}
for (int i = 0; i < folder.Folders.Count; i++)
{
Folder folder1 = folder.Folders[i];
files.Add(folder1);
GetAllObjectsRecursively(folder1, ref files, parentPath + pathSeparator + folder1.Name, pathSeparator, searchPattern);
}
}
}
}