瀏覽代碼

switched to built-in methods for directory browsing

Luke Pulverenti 12 年之前
父節點
當前提交
e744302709
共有 1 個文件被更改,包括 31 次插入11 次删除
  1. 31 11
      MediaBrowser.Api/EnvironmentService.cs

+ 31 - 11
MediaBrowser.Api/EnvironmentService.cs

@@ -1,5 +1,4 @@
 using MediaBrowser.Common.Net;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.Net;
 using ServiceStack.ServiceHost;
@@ -206,19 +205,40 @@ namespace MediaBrowser.Api
         /// <returns>IEnumerable{FileSystemEntryInfo}.</returns>
         private IEnumerable<FileSystemEntryInfo> GetFileSystemEntries(GetDirectoryContents request)
         {
-            var fileSystemEntries = FileSystem.GetFileSystemEntries(request.Path, "*", request.IncludeFiles, request.IncludeDirectories).Where(f => !f.IsSystemFile);
-
-            if (!request.IncludeHidden)
+            var entries = new DirectoryInfo(request.Path).EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly).Where(i =>
             {
-                fileSystemEntries = fileSystemEntries.Where(f => !f.IsHidden);
-            }
+                if (i.Attributes.HasFlag(FileAttributes.System))
+                {
+                    return false;
+                }
+
+                if (!request.IncludeHidden && i.Attributes.HasFlag(FileAttributes.Hidden))
+                {
+                    return false;
+                }
+
+                var isDirectory = i.Attributes.HasFlag(FileAttributes.Directory);
+
+                if (!request.IncludeFiles && !isDirectory)
+                {
+                    return false;
+                }
+
+                if (!request.IncludeDirectories && isDirectory)
+                {
+                    return false;
+                }
+                
+                return true;
+            });
 
-            return fileSystemEntries.Select(f => new FileSystemEntryInfo
+            return entries.Select(f => new FileSystemEntryInfo
             {
-                Name = f.cFileName,
-                Path = f.Path,
-                Type = f.IsDirectory ? FileSystemEntryType.Directory : FileSystemEntryType.File
-            });
+                Name = f.Name,
+                Path = f.FullName,
+                Type = f.Attributes.HasFlag(FileAttributes.Directory) ? FileSystemEntryType.Directory : FileSystemEntryType.File
+
+            }).ToList();
         }
 
         /// <summary>