using System; using System.Collections.Generic; using System.IO; namespace Umbraco.Core.IO { //TODO: There is no way to create a directory here without creating a file in a directory and then deleting it //TODO: Should probably implement a rename? /// /// Provides methods allowing the manipulation of files within an Umbraco application. /// public interface IFileSystem { /// /// Gets all directories matching the given path. /// /// The path to the directories. /// /// The representing the matched directories. /// IEnumerable GetDirectories(string path); /// /// Deletes the specified directory. /// /// The name of the directory to remove. void DeleteDirectory(string path); /// /// Deletes the specified directory and, if indicated, any subdirectories and files in the directory. /// /// Azure blob storage has no real concept of directories so deletion is always recursive. /// The name of the directory to remove. /// Whether to remove directories, subdirectories, and files in path. void DeleteDirectory(string path, bool recursive); /// /// Determines whether the specified directory exists. /// /// The directory to check. /// /// True if the directory exists and the user has permission to view it; otherwise false. /// bool DirectoryExists(string path); /// /// Adds a file to the file system. /// /// The path to the given file. /// The containing the file contents. void AddFile(string path, Stream stream); /// /// Adds a file to the file system. /// /// The path to the given file. /// The containing the file contents. /// Whether to override the file if it already exists. void AddFile(string path, Stream stream, bool overrideIfExists); /// /// Gets all files matching the given path. /// /// The path to the files. /// /// The representing the matched files. /// IEnumerable GetFiles(string path); /// /// Gets all files matching the given path and filter. /// /// The path to the files. /// A filter that allows the querying of file extension. *.jpg /// /// The representing the matched files. /// IEnumerable GetFiles(string path, string filter); /// /// Gets a representing the file at the gieven path. /// /// The path to the file. /// /// . /// Stream OpenFile(string path); /// /// Deletes the specified file. /// /// The name of the file to remove. void DeleteFile(string path); /// /// Determines whether the specified file exists. /// /// The file to check. /// /// True if the file exists and the user has permission to view it; otherwise false. /// bool FileExists(string path); /// /// Returns the application relative path to the file. /// /// The full path or url. /// /// The representing the relative path. /// string GetRelativePath(string fullPathOrUrl); /// /// Gets the full qualified path to the file. /// /// The file to return the full path for. /// /// The representing the full path. /// string GetFullPath(string path); /// /// Returns the application relative url to the file. /// /// The path to return the url for. /// /// representing the relative url. /// string GetUrl(string path); /// /// Gets the last modified date/time of the file, expressed as a UTC value. /// /// The path to the file. /// /// . /// DateTimeOffset GetLastModified(string path); /// /// Gets the created date/time of the file, expressed as a UTC value. /// /// The path to the file. /// /// . /// DateTimeOffset GetCreated(string path); } }