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" />