From a86b71899ec52c44ddc6c3018e8cc5e9d7ff4d62 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Thu, 27 Dec 2018 18:27:57 -0500 Subject: Add GPL modules --- MediaBrowser.Model/IO/IFileSystem.cs | 454 +++++++++++++++++++++++++++++++++++ 1 file changed, 454 insertions(+) create mode 100644 MediaBrowser.Model/IO/IFileSystem.cs (limited to 'MediaBrowser.Model/IO/IFileSystem.cs') diff --git a/MediaBrowser.Model/IO/IFileSystem.cs b/MediaBrowser.Model/IO/IFileSystem.cs new file mode 100644 index 000000000..3200affd6 --- /dev/null +++ b/MediaBrowser.Model/IO/IFileSystem.cs @@ -0,0 +1,454 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace MediaBrowser.Model.IO +{ + /// + /// Interface IFileSystem + /// + public interface IFileSystem + { + void AddShortcutHandler(IShortcutHandler handler); + + /// + /// Determines whether the specified filename is shortcut. + /// + /// The filename. + /// true if the specified filename is shortcut; otherwise, false. + bool IsShortcut(string filename); + + /// + /// Resolves the shortcut. + /// + /// The filename. + /// System.String. + string ResolveShortcut(string filename); + + /// + /// Creates the shortcut. + /// + /// The shortcut path. + /// The target. + void CreateShortcut(string shortcutPath, string target); + + string MakeAbsolutePath(string folderPath, string filePath); + + /// + /// Returns a object for the specified file or directory path. + /// + /// A path to a file or directory. + /// A object. + /// If the specified path points to a directory, the returned object's + /// property will be set to true and all other properties will reflect the properties of the directory. + FileSystemMetadata GetFileSystemInfo(string path); + + /// + /// Returns a object for the specified file path. + /// + /// A path to a file. + /// A object. + /// If the specified path points to a directory, the returned object's + /// property and the property will both be set to false. + /// For automatic handling of files and directories, use . + FileSystemMetadata GetFileInfo(string path); + + /// + /// Returns a object for the specified directory path. + /// + /// A path to a directory. + /// A object. + /// If the specified path points to a file, the returned object's + /// property will be set to true and the property will be set to false. + /// For automatic handling of files and directories, use . + FileSystemMetadata GetDirectoryInfo(string path); + + /// + /// Gets the valid filename. + /// + /// The filename. + /// System.String. + string GetValidFilename(string filename); + + /// + /// Gets the creation time UTC. + /// + /// The information. + /// DateTime. + DateTime GetCreationTimeUtc(FileSystemMetadata info); + + /// + /// Gets the creation time UTC. + /// + /// The path. + /// DateTime. + DateTime GetCreationTimeUtc(string path); + + /// + /// Gets the last write time UTC. + /// + /// The information. + /// DateTime. + DateTime GetLastWriteTimeUtc(FileSystemMetadata info); + + /// + /// Gets the last write time UTC. + /// + /// The path. + /// DateTime. + DateTime GetLastWriteTimeUtc(string path); + + /// + /// Gets the file stream. + /// + /// The path. + /// The mode. + /// The access. + /// The share. + /// if set to true [is asynchronous]. + /// FileStream. + Stream GetFileStream(string path, FileOpenMode mode, FileAccessMode access, FileShareMode share, bool isAsync = false); + + Stream GetFileStream(string path, FileOpenMode mode, FileAccessMode access, FileShareMode share, FileOpenOptions fileOpenOptions); + + /// + /// Opens the read. + /// + /// The path. + /// Stream. + Stream OpenRead(String path); + + string DefaultDirectory { get; } + + /// + /// Swaps the files. + /// + /// The file1. + /// The file2. + void SwapFiles(string file1, string file2); + + bool AreEqual(string path1, string path2); + + /// + /// Determines whether [contains sub path] [the specified parent path]. + /// + /// The parent path. + /// The path. + /// true if [contains sub path] [the specified parent path]; otherwise, false. + bool ContainsSubPath(string parentPath, string path); + + /// + /// Determines whether [is root path] [the specified path]. + /// + /// The path. + /// true if [is root path] [the specified path]; otherwise, false. + bool IsRootPath(string path); + + /// + /// Normalizes the path. + /// + /// The path. + /// System.String. + string NormalizePath(string path); + + string GetDirectoryName(string path); + + /// + /// Gets the file name without extension. + /// + /// The information. + /// System.String. + string GetFileNameWithoutExtension(FileSystemMetadata info); + + /// + /// Gets the file name without extension. + /// + /// The path. + /// System.String. + string GetFileNameWithoutExtension(string path); + + /// + /// Determines whether [is path file] [the specified path]. + /// + /// The path. + /// true if [is path file] [the specified path]; otherwise, false. + bool IsPathFile(string path); + + /// + /// Deletes the file. + /// + /// The path. + void DeleteFile(string path); + + /// + /// Deletes the directory. + /// + /// The path. + /// if set to true [recursive]. + void DeleteDirectory(string path, bool recursive); + + /// + /// Gets the directories. + /// + /// The path. + /// if set to true [recursive]. + /// IEnumerable<DirectoryInfo>. + IEnumerable GetDirectories(string path, bool recursive = false); + + /// + /// Gets the files. + /// + IEnumerable GetFiles(string path, bool recursive = false); + + IEnumerable GetFiles(string path, string [] extensions, bool enableCaseSensitiveExtensions, bool recursive); + + /// + /// Gets the file system entries. + /// + /// The path. + /// if set to true [recursive]. + /// IEnumerable<FileSystemMetadata>. + IEnumerable GetFileSystemEntries(string path, bool recursive = false); + + /// + /// Creates the directory. + /// + /// The path. + void CreateDirectory(string path); + + /// + /// Copies the file. + /// + /// The source. + /// The target. + /// if set to true [overwrite]. + void CopyFile(string source, string target, bool overwrite); + + /// + /// Moves the file. + /// + /// The source. + /// The target. + void MoveFile(string source, string target); + + /// + /// Moves the directory. + /// + /// The source. + /// The target. + void MoveDirectory(string source, string target); + + /// + /// Directories the exists. + /// + /// The path. + /// true if XXXX, false otherwise. + bool DirectoryExists(string path); + + /// + /// Files the exists. + /// + /// The path. + /// true if XXXX, false otherwise. + bool FileExists(string path); + + /// + /// Reads all text. + /// + /// The path. + /// System.String. + string ReadAllText(string path); + + byte[] ReadAllBytes(string path); + + void WriteAllBytes(string path, byte[] bytes); + + /// + /// Writes all text. + /// + /// The path. + /// The text. + void WriteAllText(string path, string text); + + /// + /// Writes all text. + /// + /// The path. + /// The text. + /// The encoding. + void WriteAllText(string path, string text, Encoding encoding); + + /// + /// Reads all text. + /// + /// The path. + /// The encoding. + /// System.String. + string ReadAllText(string path, Encoding encoding); + + string[] ReadAllLines(string path); + + void WriteAllLines(string path, IEnumerable lines); + + /// + /// Gets the directory paths. + /// + /// The path. + /// if set to true [recursive]. + /// IEnumerable<System.String>. + IEnumerable GetDirectoryPaths(string path, bool recursive = false); + + /// + /// Gets the file paths. + /// + /// The path. + /// if set to true [recursive]. + /// IEnumerable<System.String>. + IEnumerable GetFilePaths(string path, bool recursive = false); + IEnumerable GetFilePaths(string path, string[] extensions, bool enableCaseSensitiveExtensions, bool recursive); + + /// + /// Gets the file system entry paths. + /// + /// The path. + /// if set to true [recursive]. + /// IEnumerable<System.String>. + IEnumerable GetFileSystemEntryPaths(string path, bool recursive = false); + + void SetHidden(string path, bool isHidden); + void SetReadOnly(string path, bool readOnly); + void SetAttributes(string path, bool isHidden, bool readOnly); + + char DirectorySeparatorChar { get; } + + string GetFullPath(string path); + + List GetDrives(); + + void SetExecutable(string path); + } + + public enum FileOpenMode + { + // + // Summary: + // Specifies that the operating system should create a new file. This requires System.Security.Permissions.FileIOPermissionAccess.Write + // permission. If the file already exists, an System.IO.IOException exception is + // thrown. + CreateNew = 1, + // + // Summary: + // Specifies that the operating system should create a new file. If the file already + // exists, it will be overwritten. This requires System.Security.Permissions.FileIOPermissionAccess.Write + // permission. FileMode.Create is equivalent to requesting that if the file does + // not exist, use System.IO.FileMode.CreateNew; otherwise, use System.IO.FileMode.Truncate. + // If the file already exists but is a hidden file, an System.UnauthorizedAccessException + // exception is thrown. + Create = 2, + // + // Summary: + // Specifies that the operating system should open an existing file. The ability + // to open the file is dependent on the value specified by the System.IO.FileAccess + // enumeration. A System.IO.FileNotFoundException exception is thrown if the file + // does not exist. + Open = 3, + // + // Summary: + // Specifies that the operating system should open a file if it exists; otherwise, + // a new file should be created. If the file is opened with FileAccess.Read, System.Security.Permissions.FileIOPermissionAccess.Read + // permission is required. If the file access is FileAccess.Write, System.Security.Permissions.FileIOPermissionAccess.Write + // permission is required. If the file is opened with FileAccess.ReadWrite, both + // System.Security.Permissions.FileIOPermissionAccess.Read and System.Security.Permissions.FileIOPermissionAccess.Write + // permissions are required. + OpenOrCreate = 4 + } + + public enum FileAccessMode + { + // + // Summary: + // Read access to the file. Data can be read from the file. Combine with Write for + // read/write access. + Read = 1, + // + // Summary: + // Write access to the file. Data can be written to the file. Combine with Read + // for read/write access. + Write = 2 + } + + public enum FileShareMode + { + // + // Summary: + // Declines sharing of the current file. Any request to open the file (by this process + // or another process) will fail until the file is closed. + None = 0, + // + // Summary: + // Allows subsequent opening of the file for reading. If this flag is not specified, + // any request to open the file for reading (by this process or another process) + // will fail until the file is closed. However, even if this flag is specified, + // additional permissions might still be needed to access the file. + Read = 1, + // + // Summary: + // Allows subsequent opening of the file for writing. If this flag is not specified, + // any request to open the file for writing (by this process or another process) + // will fail until the file is closed. However, even if this flag is specified, + // additional permissions might still be needed to access the file. + Write = 2, + // + // Summary: + // Allows subsequent opening of the file for reading or writing. If this flag is + // not specified, any request to open the file for reading or writing (by this process + // or another process) will fail until the file is closed. However, even if this + // flag is specified, additional permissions might still be needed to access the + // file. + ReadWrite = 3 + } + + // + // Summary: + // Represents advanced options for creating a System.IO.FileStream object. + [Flags] + public enum FileOpenOptions + { + // + // Summary: + // Indicates that the system should write through any intermediate cache and go + // directly to disk. + WriteThrough = int.MinValue, + // + // Summary: + // Indicates that no additional options should be used when creating a System.IO.FileStream + // object. + None = 0, + // + // Summary: + // Indicates that a file is encrypted and can be decrypted only by using the same + // user account used for encryption. + Encrypted = 16384, + // + // Summary: + // Indicates that a file is automatically deleted when it is no longer in use. + DeleteOnClose = 67108864, + // + // Summary: + // Indicates that the file is to be accessed sequentially from beginning to end. + // The system can use this as a hint to optimize file caching. If an application + // moves the file pointer for random access, optimum caching may not occur; however, + // correct operation is still guaranteed. + SequentialScan = 134217728, + // + // Summary: + // Indicates that the file is accessed randomly. The system can use this as a hint + // to optimize file caching. + RandomAccess = 268435456, + // + // Summary: + // Indicates that a file can be used for asynchronous reading and writing. + Asynchronous = 1073741824 + } +} -- cgit v1.2.3