コード例 #1
0
        /// <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]);
        }
コード例 #2
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]);
        }