diff --git a/MediaBrowser.Api/EnvironmentService.cs b/MediaBrowser.Api/EnvironmentService.cs
index 9e4e6233a..6bcef4d07 100644
--- a/MediaBrowser.Api/EnvironmentService.cs
+++ b/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
/// IEnumerable{FileSystemEntryInfo}.
private IEnumerable 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;
+ }
- return fileSystemEntries.Select(f => new FileSystemEntryInfo
- {
- Name = f.cFileName,
- Path = f.Path,
- Type = f.IsDirectory ? FileSystemEntryType.Directory : FileSystemEntryType.File
+ 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 entries.Select(f => new FileSystemEntryInfo
+ {
+ Name = f.Name,
+ Path = f.FullName,
+ Type = f.Attributes.HasFlag(FileAttributes.Directory) ? FileSystemEntryType.Directory : FileSystemEntryType.File
+
+ }).ToList();
}
///