/// <summary> /// Find directories inside. /// </summary> /// <param name="path">Path to find the directories</param> /// <param name="isRecursive">Recursive search (default: false, optional)</param> /// <returns>Returns array of the found directories inside the path. Zero length array when an error occured.</returns> public static string[] GetDirectories(string path, bool isRecursive = false) { if (isWebPlatform && !isEditor) { Debug.LogWarning("'GetDirectories' is not supported for the current platform!"); } else if (isWSABasedPlatform && !isEditor) { #if CT_FB_PRO #if UNITY_WSA && !UNITY_EDITOR Crosstales.FB.FileBrowserWSAImpl fbWsa = new Crosstales.FB.FileBrowserWSAImpl(); fbWsa.isBusy = true; UnityEngine.WSA.Application.InvokeOnUIThread(() => { fbWsa.GetDirectories(path, isRecursive); }, false); do { //wait } while (fbWsa.isBusy); return(fbWsa.Selection.ToArray()); #endif #else Debug.LogWarning( "'GetDirectories' under UWP (WSA) is supported in 'File Browser PRO'. For more, please see: " + BaseConstants.ASSET_FB); #endif } else { if (!string.IsNullOrEmpty(path)) { try { string _path = ValidatePath(path); #if NET_4_6 || NET_STANDARD_2_0 return(System.IO.Directory.EnumerateDirectories(_path, "*", isRecursive ? System.IO.SearchOption.AllDirectories : System.IO.SearchOption.TopDirectoryOnly).ToArray()); #else return(System.IO.Directory.GetDirectories(_path, "*", isRecursive ? System.IO.SearchOption.AllDirectories : System.IO.SearchOption.TopDirectoryOnly)); #endif } catch (System.Exception ex) { Debug.LogWarning("Could not scan the path for directories: " + ex); } } } return(new string[0]); }
/// <summary> /// Find files inside a path. /// </summary> /// <param name="path">Path to find the files</param> /// <param name="isRecursive">Recursive search (default: false, optional)</param> /// <param name="extensions">Extensions for the file search, e.g. "png" (optional)</param> /// <returns>Returns array of the found files inside the path (alphabetically ordered). Zero length array when an error occured.</returns> public static string[] GetFiles(string path, bool isRecursive = false, params string[] extensions) { if (isWebPlatform && !isEditor) { Debug.LogWarning("'GetFiles' is not supported for the current platform!"); } else if (isWSABasedPlatform && !isEditor) { #if CT_FB_PRO #if UNITY_WSA && !UNITY_EDITOR Crosstales.FB.FileBrowserWSAImpl fbWsa = new Crosstales.FB.FileBrowserWSAImpl(); fbWsa.isBusy = true; UnityEngine.WSA.Application.InvokeOnUIThread(() => { fbWsa.GetFiles(path, isRecursive, extensions); }, false); do { //wait } while (fbWsa.isBusy); return(fbWsa.Selection.ToArray()); #endif #else Debug.LogWarning("'GetFiles' under UWP (WSA) is supported in 'File Browser PRO'. For more, please see: " + BaseConstants.ASSET_FB); #endif } else { if (!string.IsNullOrEmpty(path)) { try { string _path = ValidatePath(path); if (extensions == null || extensions.Length == 0) { return(System.IO.Directory.GetFiles(_path, "*", isRecursive ? System.IO.SearchOption.AllDirectories : System.IO.SearchOption.TopDirectoryOnly)); } else { foreach (string extension in extensions) { if (extension.Equals("*") || extension.Equals("*.*")) { return(System.IO.Directory.GetFiles(_path, "*", isRecursive ? System.IO.SearchOption.AllDirectories : System.IO.SearchOption.TopDirectoryOnly)); } } System.Collections.Generic.List <string> files = new System.Collections.Generic.List <string>(); foreach (string extension in extensions) { files.AddRange(System.IO.Directory.GetFiles(_path, "*." + extension, isRecursive ? System.IO.SearchOption.AllDirectories : System.IO.SearchOption.TopDirectoryOnly)); } return(files.OrderBy(q => q).ToArray()); } } catch (System.Exception ex) { Debug.LogWarning("Could not scan the path for files: " + ex); } } } return(new string[0]); }