You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by dh...@apache.org on 2016/05/17 00:43:36 UTC

reef git commit: [REEF-1389] Add wrapper interface for DirectoryInfo and FileInfo to facilitate testing for REEF-1357

Repository: reef
Updated Branches:
  refs/heads/master 8b483a53c -> cce59bbdd


[REEF-1389] Add wrapper interface for DirectoryInfo and FileInfo to facilitate testing for REEF-1357

JIRA:
  [REEF-1389](https://issues.apache.org/jira/browse/REEF-1389)

Pull Request:
  Closes #997


Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/cce59bbd
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/cce59bbd
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/cce59bbd

Branch: refs/heads/master
Commit: cce59bbdd3d3b25bed2121f6fdd6039334e13159
Parents: 8b483a5
Author: Andrew Chung <af...@gmail.com>
Authored: Wed May 11 14:49:03 2016 -0700
Committer: dhruv <dh...@apache.org>
Committed: Mon May 16 17:42:36 2016 -0700

----------------------------------------------------------------------
 .../Files/DefaultDirectoryInfo.cs               | 450 +++++++++++++++++++
 .../Org.Apache.REEF.IO/Files/DefaultFileInfo.cs | 334 ++++++++++++++
 .../Files/FileSystemInfoFactory.cs              |  45 ++
 .../Org.Apache.REEF.IO/Files/IDirectoryInfo.cs  | 177 ++++++++
 .../Org.Apache.REEF.IO/Files/IFIleSystemInfo.cs |  96 ++++
 lang/cs/Org.Apache.REEF.IO/Files/IFileInfo.cs   | 126 ++++++
 .../Org.Apache.REEF.IO.csproj                   |   6 +
 7 files changed, 1234 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/cce59bbd/lang/cs/Org.Apache.REEF.IO/Files/DefaultDirectoryInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IO/Files/DefaultDirectoryInfo.cs b/lang/cs/Org.Apache.REEF.IO/Files/DefaultDirectoryInfo.cs
new file mode 100644
index 0000000..47a86fe
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.IO/Files/DefaultDirectoryInfo.cs
@@ -0,0 +1,450 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+// 
+//   http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Security.AccessControl;
+
+namespace Org.Apache.REEF.IO.Files
+{
+    /// <summary>
+    /// This is meant only as a proxy class for <see cref="DirectoryInfo"/> and has no 
+    /// relation to classes in <see cref="Org.Apache.REEF.IO.FileSystem"/>.
+    /// To create a <see cref="DefaultDirectoryInfo"/> object from a <see cref="DirectoryInfo"/> object,
+    /// please use the static factory method <see cref="FromDirectoryInfo"/>.
+    /// </summary>
+    public sealed class DefaultDirectoryInfo : IDirectoryInfo
+    {
+        private readonly DirectoryInfo _directoryInfo;
+
+        private DefaultDirectoryInfo(DirectoryInfo info)
+        {
+            _directoryInfo = info;
+        }
+
+        /// <summary>
+        /// Factory method to create an <see cref="IDirectoryInfo"/> object
+        /// from a <see cref="DirectoryInfo"/> object.
+        /// </summary>
+        public static IDirectoryInfo FromDirectoryInfo(DirectoryInfo info)
+        {
+            return new DefaultDirectoryInfo(info);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Attributes"/>.
+        /// </summary>
+        public FileAttributes Attributes
+        {
+            get { return _directoryInfo.Attributes; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#CreationTime"/>.
+        /// </summary>
+        public DateTime CreationTime
+        {
+            get { return _directoryInfo.CreationTime; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#CreationTimeUtc"/>.
+        /// </summary>
+        public DateTime CreationTimeUtc
+        {
+            get { return _directoryInfo.CreationTimeUtc; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Exists"/>.
+        /// </summary>
+        public bool Exists
+        {
+            get { return _directoryInfo.Exists; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Extension"/>.
+        /// </summary>
+        public string Extension
+        {
+            get { return _directoryInfo.Extension; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#FullName"/>.
+        /// </summary>
+        public string FullName
+        {
+            get { return _directoryInfo.FullName; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#LastAccessTime"/>.
+        /// </summary>
+        public DateTime LastAccessTime
+        {
+            get { return _directoryInfo.LastAccessTime; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#LastAccessTimeUtc"/>.
+        /// </summary>
+        public DateTime LastAccessTimeUtc
+        {
+            get { return _directoryInfo.LastAccessTimeUtc; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#LastWriteTime"/>.
+        /// </summary>
+        public DateTime LastWriteTime
+        {
+            get { return _directoryInfo.LastWriteTime; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#LastWriteTimeUtc"/>.
+        /// </summary>
+        public DateTime LastWriteTimeUtc
+        {
+            get { return _directoryInfo.LastWriteTimeUtc; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Name"/>.
+        /// </summary>
+        public string Name
+        {
+            get { return _directoryInfo.Name; }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Parent"/>.
+        /// </summary>
+        public IDirectoryInfo Parent
+        {
+            get { return FromDirectoryInfo(_directoryInfo.Parent); }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Root"/>.
+        /// </summary>
+        public IDirectoryInfo Root
+        {
+            get { return FromDirectoryInfo(_directoryInfo.Root); }
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Delete"/>.
+        /// </summary>
+        public void Delete()
+        {
+            _directoryInfo.Delete();
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Refresh"/>.
+        /// </summary>
+        public void Refresh()
+        {
+            _directoryInfo.Refresh();
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Create"/>.
+        /// </summary>
+        public void Create()
+        {
+            _directoryInfo.Create();
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Create(DirectorySecurity)"/>.
+        /// </summary>
+        public void Create(DirectorySecurity directorySecurity)
+        {
+            _directoryInfo.Create(directorySecurity);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#CreateSubdirectory(string)"/>.
+        /// </summary>
+        public IDirectoryInfo CreateSubdirectory(string path)
+        {
+            return FromDirectoryInfo(_directoryInfo.CreateSubdirectory(path));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#CreateSubdirectory(string, DirectorySecurity)"/>.
+        /// </summary>
+        public IDirectoryInfo CreateSubdirectory(string path, DirectorySecurity directorySecurity)
+        {
+            return FromDirectoryInfo(_directoryInfo.CreateSubdirectory(path, directorySecurity));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Delete(bool)"/>.
+        /// </summary>
+        public void Delete(bool recursive)
+        {
+            _directoryInfo.Delete(recursive);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateDirectories"/>.
+        /// </summary>
+        public IEnumerable<IDirectoryInfo> EnumerateDirectories()
+        {
+            return _directoryInfo.EnumerateDirectories().Select(FromDirectoryInfo);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateDirectories(string)"/>.
+        /// </summary>
+        public IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPattern)
+        {
+            return _directoryInfo.EnumerateDirectories(searchPattern).Select(FromDirectoryInfo);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateDirectories(string, SearchOption)"/>.
+        /// </summary>
+        public IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPattern, SearchOption searchOption)
+        {
+            return _directoryInfo.EnumerateDirectories(searchPattern, searchOption).Select(FromDirectoryInfo);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFiles"/>.
+        /// </summary>
+        public IEnumerable<IFileInfo> EnumerateFiles()
+        {
+            return _directoryInfo.EnumerateFiles().Select(DefaultFileInfo.FromFileInfo);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFiles(string)"/>.
+        /// </summary>
+        public IEnumerable<IFileInfo> EnumerateFiles(string searchPattern)
+        {
+            return _directoryInfo.EnumerateFiles(searchPattern).Select(DefaultFileInfo.FromFileInfo);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFiles(string, SearchOption)"/>.
+        /// </summary>
+        public IEnumerable<IFileInfo> EnumerateFiles(string searchPattern, SearchOption searchOption)
+        {
+            return _directoryInfo.EnumerateFiles(searchPattern, searchOption).Select(DefaultFileInfo.FromFileInfo);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFileSystemInfos"/>.
+        /// </summary>
+        public IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos()
+        {
+            return ConvertFileSystemInfoEnumerable(_directoryInfo.EnumerateFileSystemInfos());
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFileSystemInfos(string)"/>.
+        /// </summary>
+        public IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string searchPattern)
+        {
+            return ConvertFileSystemInfoEnumerable(_directoryInfo.EnumerateFileSystemInfos(searchPattern));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFileSystemInfos(string, SearchOption)"/>.
+        /// </summary>
+        public IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string searchPattern, SearchOption searchOption)
+        {
+            return ConvertFileSystemInfoEnumerable(_directoryInfo.EnumerateFileSystemInfos(searchPattern, searchOption));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetAccessControl"/>.
+        /// </summary>
+        public DirectorySecurity GetAccessControl()
+        {
+            return _directoryInfo.GetAccessControl();
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetAccessControl(AccessControlSections)"/>.
+        /// </summary>
+        public DirectorySecurity GetAccessControl(AccessControlSections includeSections)
+        {
+            return _directoryInfo.GetAccessControl(includeSections);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetDirectories"/>.
+        /// </summary>
+        public IDirectoryInfo[] GetDirectories()
+        {
+            return ConvertDirectoryArray(_directoryInfo.GetDirectories());
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetDirectories(string)"/>.
+        /// </summary>
+        public IDirectoryInfo[] GetDirectories(string searchPattern)
+        {
+            return ConvertDirectoryArray(_directoryInfo.GetDirectories(searchPattern));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetDirectories(string, SearchOption)"/>.
+        /// </summary>
+        public IDirectoryInfo[] GetDirectories(string searchPattern, SearchOption searchOption)
+        {
+            return ConvertDirectoryArray(_directoryInfo.GetDirectories(searchPattern, searchOption));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFiles"/>.
+        /// </summary>
+        public IFileInfo[] GetFiles()
+        {
+            return ConvertFileArray(_directoryInfo.GetFiles());
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFiles(string)"/>.
+        /// </summary>
+        public IFileInfo[] GetFiles(string searchPattern)
+        {
+            return ConvertFileArray(_directoryInfo.GetFiles(searchPattern));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFiles(string, SearchOption)"/>.
+        /// </summary>
+        public IFileInfo[] GetFiles(string searchPattern, SearchOption searchOption)
+        {
+            return ConvertFileArray(_directoryInfo.GetFiles(searchPattern, searchOption));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFileSystemInfos"/>.
+        /// </summary>
+        public IFileSystemInfo[] GetFileSystemInfos()
+        {
+            return ConvertFileSystemInfoArray(_directoryInfo.GetFileSystemInfos());
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFileSystemInfos(string)"/>.
+        /// </summary>
+        public IFileSystemInfo[] GetFileSystemInfos(string searchPattern)
+        {
+            return ConvertFileSystemInfoArray(_directoryInfo.GetFileSystemInfos(searchPattern));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFileSystemInfos(string, SearchOption)"/>.
+        /// </summary>
+        public IFileSystemInfo[] GetFileSystemInfos(string searchPattern, SearchOption searchOption)
+        {
+            return ConvertFileSystemInfoArray(_directoryInfo.GetFileSystemInfos(searchPattern, searchOption));
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#MoveTo(string)"/>.
+        /// </summary>
+        public void MoveTo(string destDirName)
+        {
+            _directoryInfo.MoveTo(destDirName);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#SetAccessControl(DirectorySecurity)"/>.
+        /// </summary>
+        public void SetAccessControl(DirectorySecurity directorySecurity)
+        {
+            _directoryInfo.SetAccessControl(directorySecurity);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Equals(object)"/>.
+        /// </summary>
+        public override bool Equals(object obj)
+        {
+            var other = obj as DefaultDirectoryInfo;
+            return other != null && Equals(other);
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetHashCode"/>.
+        /// </summary>
+        public override int GetHashCode()
+        {
+            return _directoryInfo != null ? _directoryInfo.GetHashCode() : 0;
+        }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#ToString"/>.
+        /// </summary>
+        public override string ToString()
+        {
+            return _directoryInfo.ToString();
+        }
+
+        private static IFileSystemInfo[] ConvertFileSystemInfoArray(IEnumerable<FileSystemInfo> fsInfos)
+        {
+            return ConvertFileSystemInfoEnumerable(fsInfos).ToArray();
+        }
+
+        private static IEnumerable<IFileSystemInfo> ConvertFileSystemInfoEnumerable(IEnumerable<FileSystemInfo> fileSystemInfos)
+        {
+            return fileSystemInfos.Select(FileSystemInfoFactory.FromFileSystemInfo).Where(fsInfo => fsInfo != null);
+        }
+
+        private static IDirectoryInfo[] ConvertDirectoryArray(DirectoryInfo[] directoryInfos)
+        {
+            var arr = new IDirectoryInfo[directoryInfos.Length];
+
+            for (var i = 0; i < directoryInfos.Length; i++)
+            {
+                arr[i] = FromDirectoryInfo(directoryInfos[i]);
+            }
+
+            return arr;
+        }
+
+        private static IFileInfo[] ConvertFileArray(FileInfo[] fileInfos)
+        {
+            var arr = new IFileInfo[fileInfos.Length];
+
+            for (var i = 0; i < fileInfos.Length; i++)
+            {
+                arr[i] = DefaultFileInfo.FromFileInfo(fileInfos[i]);
+            }
+
+            return arr;
+        }
+
+        private bool Equals(DefaultDirectoryInfo other)
+        {
+            return Equals(_directoryInfo, other._directoryInfo);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/reef/blob/cce59bbd/lang/cs/Org.Apache.REEF.IO/Files/DefaultFileInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IO/Files/DefaultFileInfo.cs b/lang/cs/Org.Apache.REEF.IO/Files/DefaultFileInfo.cs
new file mode 100644
index 0000000..be4bfee
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.IO/Files/DefaultFileInfo.cs
@@ -0,0 +1,334 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+// 
+//   http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System;
+using System.IO;
+using System.Security.AccessControl;
+
+namespace Org.Apache.REEF.IO.Files
+{
+    /// <summary>
+    /// This is meant only as a proxy class for <see cref="FileInfo"/> and has no 
+    /// relation to classes in <see cref="Org.Apache.REEF.IO.FileSystem"/>.
+    /// To create a <see cref="DefaultFileInfo"/> object from a <see cref="FileInfo"/> object,
+    /// please use the static method <see cref="FromFileInfo"/>.
+    /// </summary>
+    public sealed class DefaultFileInfo : IFileInfo
+    {
+        private readonly FileInfo _fileInfo;
+
+        private DefaultFileInfo(FileInfo info)
+        {
+            _fileInfo = info;
+        }
+
+        /// <summary>
+        /// Factory method to create an <see cref="IFileInfo"/> object
+        /// from a <see cref="FileInfo"/> object.
+        /// </summary>
+        public static IFileInfo FromFileInfo(FileInfo fileInfo)
+        {
+            return new DefaultFileInfo(fileInfo);
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Attributes"/>.
+        /// </summary>
+        public FileAttributes Attributes
+        {
+            get { return _fileInfo.Attributes; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#CreationTime"/>.
+        /// </summary>
+        public DateTime CreationTime
+        {
+            get { return _fileInfo.CreationTime; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#CreationTimeUtc"/>.
+        /// </summary>
+        public DateTime CreationTimeUtc
+        {
+            get { return _fileInfo.CreationTimeUtc; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Directory"/>.
+        /// </summary>
+        public IDirectoryInfo Directory
+        {
+            get { return DefaultDirectoryInfo.FromDirectoryInfo(_fileInfo.Directory); }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#DirectoryName"/>.
+        /// </summary>
+        public string DirectoryName
+        {
+            get { return _fileInfo.DirectoryName; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Exists"/>.
+        /// </summary>
+        public bool Exists
+        {
+            get { return _fileInfo.Exists; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Extension"/>.
+        /// </summary>
+        public string Extension
+        {
+            get { return _fileInfo.Extension; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#FullName"/>.
+        /// </summary>
+        public string FullName
+        {
+            get { return _fileInfo.FullName; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#IsReadOnly"/>.
+        /// </summary>
+        public bool IsReadOnly
+        {
+            get { return _fileInfo.IsReadOnly; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#LastAccessTime"/>.
+        /// </summary>
+        public DateTime LastAccessTime
+        {
+            get { return _fileInfo.LastAccessTime; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#LastAccessTimeUtc"/>.
+        /// </summary>
+        public DateTime LastAccessTimeUtc
+        {
+            get { return _fileInfo.LastAccessTimeUtc; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#LastWriteTime"/>.
+        /// </summary>
+        public DateTime LastWriteTime
+        {
+            get { return _fileInfo.LastWriteTime; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#LastWriteTimeUtc"/>.
+        /// </summary>
+        public DateTime LastWriteTimeUtc
+        {
+            get { return _fileInfo.LastWriteTimeUtc; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Length"/>.
+        /// </summary>
+        public long Length
+        {
+            get { return _fileInfo.Length; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Name"/>.
+        /// </summary>
+        public string Name
+        {
+            get { return _fileInfo.Name; }
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#AppendText"/>.
+        /// </summary>
+        public StreamWriter AppendText()
+        {
+            return _fileInfo.AppendText();
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#CopyTo(string)"/>.
+        /// </summary>
+        public IFileInfo CopyTo(string destFileName)
+        {
+            return FromFileInfo(_fileInfo.CopyTo(destFileName));
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#CopyTo(string, bool)"/>.
+        /// </summary>
+        public IFileInfo CopyTo(string destFileName, bool overwrite)
+        {
+            return FromFileInfo(_fileInfo.CopyTo(destFileName, overwrite));
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Create"/>.
+        /// </summary>
+        public FileStream Create()
+        {
+            return _fileInfo.Create();
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#CreateText"/>.
+        /// </summary>
+        public StreamWriter CreateText()
+        {
+            return _fileInfo.CreateText();
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Delete"/>.
+        /// </summary>
+        public void Delete()
+        {
+            _fileInfo.Delete();
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#MoveTo(string)"/>.
+        /// </summary>
+        public void MoveTo(string destFileName)
+        {
+            _fileInfo.MoveTo(destFileName);
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Open(FileMode)"/>.
+        /// </summary>
+        public FileStream Open(FileMode mode)
+        {
+            return _fileInfo.Open(mode);
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Open(FileMode, FileAccess)"/>.
+        /// </summary>
+        public FileStream Open(FileMode mode, FileAccess access)
+        {
+            return _fileInfo.Open(mode, access);
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Open(FileMode, FileAccess, FileShare)"/>.
+        /// </summary>
+        public FileStream Open(FileMode mode, FileAccess access, FileShare share)
+        {
+            return _fileInfo.Open(mode, access, share);
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#OpenRead"/>.
+        /// </summary>
+        public FileStream OpenRead()
+        {
+            return _fileInfo.OpenRead();
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#OpenText"/>.
+        /// </summary>
+        public StreamReader OpenText()
+        {
+            return _fileInfo.OpenText();
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#OpenWrite"/>.
+        /// </summary>
+        public FileStream OpenWrite()
+        {
+            return _fileInfo.OpenWrite();
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Refresh"/>.
+        /// </summary>
+        public void Refresh()
+        {
+            _fileInfo.Refresh();
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Replace(string, string)"/>.
+        /// </summary>
+        public IFileInfo Replace(string destinationFileName, string destinationBackupFileName)
+        {
+            return FromFileInfo(_fileInfo.Replace(destinationFileName, destinationBackupFileName));
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Replace(string, string, bool)"/>.
+        /// </summary>
+        public IFileInfo Replace(string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors)
+        {
+            return FromFileInfo(_fileInfo.Replace(destinationFileName, destinationBackupFileName, ignoreMetadataErrors));
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#SetAccessControl(FileSecurity)"/>.
+        /// </summary>
+        public void SetAccessControl(FileSecurity fileSecurity)
+        {
+            _fileInfo.SetAccessControl(fileSecurity);
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Equals(object)"/>.
+        /// </summary>
+        public override bool Equals(object obj)
+        {
+            var other = obj as DefaultFileInfo;
+            return other != null && Equals(other);
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#GetHashCode"/>.
+        /// </summary>
+        public override int GetHashCode()
+        {
+            return _fileInfo != null ? _fileInfo.GetHashCode() : 0;
+        }
+
+        /// <summary>
+        /// See <see cref="FileInfo#ToString"/>.
+        /// </summary>
+        public override string ToString()
+        {
+            return _fileInfo.ToString();
+        }
+
+        private bool Equals(DefaultFileInfo other)
+        {
+            return Equals(_fileInfo, other._fileInfo);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/reef/blob/cce59bbd/lang/cs/Org.Apache.REEF.IO/Files/FileSystemInfoFactory.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IO/Files/FileSystemInfoFactory.cs b/lang/cs/Org.Apache.REEF.IO/Files/FileSystemInfoFactory.cs
new file mode 100644
index 0000000..81a628d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.IO/Files/FileSystemInfoFactory.cs
@@ -0,0 +1,45 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+// 
+//   http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System.IO;
+
+namespace Org.Apache.REEF.IO.Files
+{
+    /// <summary>
+    /// A static factory class that creates an <see cref="IFileSystemInfo"/> object from
+    /// a <see cref="FileSystemInfo"/> object.
+    /// </summary>
+    public static class FileSystemInfoFactory
+    {
+        public static IFileSystemInfo FromFileSystemInfo(FileSystemInfo fsInfo)
+        {
+            var dirInfo = fsInfo as DirectoryInfo;
+            if (dirInfo != null)
+            {
+                return DefaultDirectoryInfo.FromDirectoryInfo(dirInfo);
+            }
+
+            var fileInfo = fsInfo as FileInfo;
+            if (fileInfo != null)
+            {
+                return DefaultFileInfo.FromFileInfo(fileInfo);
+            }
+
+            return null;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/reef/blob/cce59bbd/lang/cs/Org.Apache.REEF.IO/Files/IDirectoryInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IO/Files/IDirectoryInfo.cs b/lang/cs/Org.Apache.REEF.IO/Files/IDirectoryInfo.cs
new file mode 100644
index 0000000..9d8af33
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.IO/Files/IDirectoryInfo.cs
@@ -0,0 +1,177 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+// 
+//   http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System.Collections.Generic;
+using System.IO;
+using System.Security.AccessControl;
+
+namespace Org.Apache.REEF.IO.Files
+{
+    /// <summary>
+    /// This is meant only as a proxy interface for <see cref="DirectoryInfo"/> and has no 
+    /// relation to classes in <see cref="Org.Apache.REEF.IO.FileSystem"/>.
+    /// To create an <see cref="IDirectoryInfo"/> object from a <see cref="DirectoryInfo"/> object,
+    /// please use the static method <see cref="DefaultDirectoryInfo.FromDirectoryInfo"/>.
+    /// </summary>
+    public interface IDirectoryInfo : IFileSystemInfo
+    {
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Parent"/>.
+        /// </summary>
+        IDirectoryInfo Parent { get; }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Root"/>.
+        /// </summary>
+        IDirectoryInfo Root { get; }
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Create"/>.
+        /// </summary>
+        void Create();
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Create(DirectorySecurity)"/>.
+        /// </summary>
+        void Create(DirectorySecurity directorySecurity);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#CreateSubdirectory(string)"/>.
+        /// </summary>
+        IDirectoryInfo CreateSubdirectory(string path);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#CreateSubdirectory(string, DirectorySecurity)"/>.
+        /// </summary>
+        IDirectoryInfo CreateSubdirectory(string path, DirectorySecurity directorySecurity);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#Delete(bool)"/>.
+        /// </summary>
+        void Delete(bool recursive);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateDirectories"/>.
+        /// </summary>
+        IEnumerable<IDirectoryInfo> EnumerateDirectories();
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateDirectories(string)"/>.
+        /// </summary>
+        IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPattern);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateDirectories(string, SearchOption)"/>.
+        /// </summary>
+        IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPattern, SearchOption searchOption);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFiles"/>.
+        /// </summary>
+        IEnumerable<IFileInfo> EnumerateFiles();
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFiles(string)"/>.
+        /// </summary>
+        IEnumerable<IFileInfo> EnumerateFiles(string searchPattern);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFiles(string, SearchOption)"/>.
+        /// </summary>
+        IEnumerable<IFileInfo> EnumerateFiles(string searchPattern, SearchOption searchOption);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFileSystemInfos"/>.
+        /// </summary>
+        IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos();
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFileSystemInfos(string)"/>.
+        /// </summary>
+        IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string searchPattern);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#EnumerateFileSystemInfos(string, SearchOption)"/>.
+        /// </summary>
+        IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string searchPattern, SearchOption searchOption);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetAccessControl"/>.
+        /// </summary>
+        DirectorySecurity GetAccessControl();
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetAccessControl(AccessControlSections)"/>.
+        /// </summary>
+        DirectorySecurity GetAccessControl(AccessControlSections includeSections);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetDirectories"/>.
+        /// </summary>
+        IDirectoryInfo[] GetDirectories();
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetDirectories(string)"/>.
+        /// </summary>
+        IDirectoryInfo[] GetDirectories(string searchPattern);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetDirectories(string, SearchOption)"/>.
+        /// </summary>
+        IDirectoryInfo[] GetDirectories(string searchPattern, SearchOption searchOption);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFiles"/>.
+        /// </summary>
+        IFileInfo[] GetFiles();
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFiles(string)"/>.
+        /// </summary>
+        IFileInfo[] GetFiles(string searchPattern);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFiles(string, SearchOption)"/>.
+        /// </summary>
+        IFileInfo[] GetFiles(string searchPattern, SearchOption searchOption);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFileSystemInfos"/>.
+        /// </summary>
+        IFileSystemInfo[] GetFileSystemInfos();
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFileSystemInfos(string)"/>.
+        /// </summary>
+        IFileSystemInfo[] GetFileSystemInfos(string searchPattern);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#GetFileSystemInfos(string, SearchOption)"/>.
+        /// </summary>
+        IFileSystemInfo[] GetFileSystemInfos(string searchPattern, SearchOption searchOption);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#MoveTo(string)"/>.
+        /// </summary>
+        void MoveTo(string destDirName);
+
+        /// <summary>
+        /// See <see cref="DirectoryInfo#SetAccessControl(DirectorySecurity)"/>.
+        /// </summary>
+        void SetAccessControl(DirectorySecurity directorySecurity);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/reef/blob/cce59bbd/lang/cs/Org.Apache.REEF.IO/Files/IFIleSystemInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IO/Files/IFIleSystemInfo.cs b/lang/cs/Org.Apache.REEF.IO/Files/IFIleSystemInfo.cs
new file mode 100644
index 0000000..ea258dc
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.IO/Files/IFIleSystemInfo.cs
@@ -0,0 +1,96 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+// 
+//   http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System;
+using System.IO;
+
+namespace Org.Apache.REEF.IO.Files
+{
+    /// <summary>
+    /// This is meant only as a proxy interface for <see cref="FileSystemInfo"/> and has no 
+    /// relation to classes in <see cref="Org.Apache.REEF.IO.FileSystem"/>.
+    /// To create an <see cref="IFileSystemInfo"/> object from a <see cref="FileSystemInfo"/>
+    /// object, please use the static factory method <see cref="FileSystemInfoFactory.FromFileSystemInfo"/>.
+    /// </summary>
+    public interface IFileSystemInfo
+    {
+        /// <summary>
+        /// See <see cref="FileSystemInfo#Attributes"/>.
+        /// </summary>
+        FileAttributes Attributes { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#CreationTime"/>.
+        /// </summary>
+        DateTime CreationTime { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#CreationTimeUtc"/>.
+        /// </summary>
+        DateTime CreationTimeUtc { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#Exists"/>.
+        /// </summary>
+        bool Exists { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#Extension"/>.
+        /// </summary>
+        string Extension { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#FullName"/>.
+        /// </summary>
+        string FullName { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#LastAccessTime"/>.
+        /// </summary>
+        DateTime LastAccessTime { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#LastAccessTimeUtc"/>.
+        /// </summary>
+        DateTime LastAccessTimeUtc { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#LastWriteTime"/>.
+        /// </summary>
+        DateTime LastWriteTime { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#LastWriteTimeUtc"/>.
+        /// </summary>
+        DateTime LastWriteTimeUtc { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#Name"/>.
+        /// </summary>
+        string Name { get; }
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#Delete"/>.
+        /// </summary>
+        void Delete();
+
+        /// <summary>
+        /// See <see cref="FileSystemInfo#Refresh"/>.
+        /// </summary>
+        void Refresh();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/reef/blob/cce59bbd/lang/cs/Org.Apache.REEF.IO/Files/IFileInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IO/Files/IFileInfo.cs b/lang/cs/Org.Apache.REEF.IO/Files/IFileInfo.cs
new file mode 100644
index 0000000..bcb43c0
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.IO/Files/IFileInfo.cs
@@ -0,0 +1,126 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+// 
+//   http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System.IO;
+using System.Security.AccessControl;
+
+namespace Org.Apache.REEF.IO.Files
+{
+    /// <summary>
+    /// This is meant only as a proxy interface for <see cref="FileInfo"/> and has no 
+    /// relation to classes in <see cref="Org.Apache.REEF.IO.FileSystem"/>.
+    /// To create an <see cref="IFileInfo"/> object from a <see cref="FileInfo"/> object,
+    /// please use the static factory method <see cref="DefaultFileInfo.FromFileInfo"/>.
+    /// </summary>
+    public interface IFileInfo : IFileSystemInfo
+    {
+        /// <summary>
+        /// See <see cref="FileInfo#Directory"/>.
+        /// </summary>
+        IDirectoryInfo Directory { get; }
+
+        /// <summary>
+        /// See <see cref="FileInfo#DirectoryName"/>.
+        /// </summary>
+        string DirectoryName { get; }
+
+        /// <summary>
+        /// See <see cref="FileInfo#IsReadOnly"/>.
+        /// </summary>
+        bool IsReadOnly { get; }
+
+        /// <summary>
+        /// See <see cref="FileInfo#Length"/>.
+        /// </summary>
+        long Length { get; }
+
+        /// <summary>
+        /// See <see cref="FileInfo#AppendText"/>.
+        /// </summary>
+        StreamWriter AppendText();
+
+        /// <summary>
+        /// See <see cref="FileInfo#CopyTo(string)"/>.
+        /// </summary>
+        IFileInfo CopyTo(string destFileName);
+
+        /// <summary>
+        /// See <see cref="FileInfo#CopyTo(string, bool)"/>.
+        /// </summary>
+        IFileInfo CopyTo(string destFileName, bool overwrite);
+
+        /// <summary>
+        /// See <see cref="FileInfo#Create"/>.
+        /// </summary>
+        FileStream Create();
+
+        /// <summary>
+        /// See <see cref="FileInfo#CreateText"/>.
+        /// </summary>
+        StreamWriter CreateText();
+
+        /// <summary>
+        /// See <see cref="FileInfo#MoveTo(string)"/>.
+        /// </summary>
+        void MoveTo(string destFileName);
+
+        /// <summary>
+        /// See <see cref="FileInfo#Open(FileMode)"/>.
+        /// </summary>
+        FileStream Open(FileMode mode);
+
+        /// <summary>
+        /// See <see cref="FileInfo#Open(FileMode, FileAccess)"/>.
+        /// </summary>
+        FileStream Open(FileMode mode, FileAccess access);
+
+        /// <summary>
+        /// See <see cref="FileInfo#(FileMode, FileAccess, FileShare)"/>.
+        /// </summary>
+        FileStream Open(FileMode mode, FileAccess access, FileShare share);
+
+        /// <summary>
+        /// See <see cref="FileInfo#OpenRead"/>.
+        /// </summary>
+        FileStream OpenRead();
+
+        /// <summary>
+        /// See <see cref="FileInfo#OpenText"/>.
+        /// </summary>
+        StreamReader OpenText();
+
+        /// <summary>
+        /// See <see cref="FileInfo#OpenWrite"/>.
+        /// </summary>
+        FileStream OpenWrite();
+
+        /// <summary>
+        /// See <see cref="FileInfo#Replace(string, string)"/>.
+        /// </summary>
+        IFileInfo Replace(string destinationFileName, string destinationBackupFileName);
+
+        /// <summary>
+        /// See <see cref="FileInfo#Replace(string, string, bool)"/>.
+        /// </summary>
+        IFileInfo Replace(string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors);
+
+        /// <summary>
+        /// See <see cref="FileInfo#SetAccessControl(FileSecurity)"/>.
+        /// </summary>
+        void SetAccessControl(FileSecurity fileSecurity);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/reef/blob/cce59bbd/lang/cs/Org.Apache.REEF.IO/Org.Apache.REEF.IO.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IO/Org.Apache.REEF.IO.csproj b/lang/cs/Org.Apache.REEF.IO/Org.Apache.REEF.IO.csproj
index 2fda120..eedc6a9 100644
--- a/lang/cs/Org.Apache.REEF.IO/Org.Apache.REEF.IO.csproj
+++ b/lang/cs/Org.Apache.REEF.IO/Org.Apache.REEF.IO.csproj
@@ -98,6 +98,12 @@ under the License.
     <Compile Include="FileSystem\AzureBlob\ICloudBlobContainer.cs" />
     <Compile Include="FileSystem\Local\LocalFileSystem.cs" />
     <Compile Include="FileSystem\Local\LocalFileSystemConfiguration.cs" />
+    <Compile Include="Files\DefaultDirectoryInfo.cs" />
+    <Compile Include="Files\DefaultFileInfo.cs" />
+    <Compile Include="Files\FileSystemInfoFactory.cs" />
+    <Compile Include="Files\IDirectoryInfo.cs" />
+    <Compile Include="Files\IFileInfo.cs" />
+    <Compile Include="Files\IFileSystemInfo.cs" />
     <Compile Include="PartitionedData\FileSystem\FileSystemInputPartition.cs" />
     <Compile Include="PartitionedData\FileSystem\FileInputPartitionDescriptor.cs" />
     <Compile Include="PartitionedData\FileSystem\Parameters\CopyToLocal.cs" />