public void MoveTo(IFile destination) { if (destination == null) { throw new ArgumentNullException(nameof(destination)); } // Use the file system APIs if destination is also in the file system if (destination is LocalFile) { LocalFileProvider.Retry(() => _file.MoveTo(destination.Path.FullPath)); } else { // Otherwise use streams to perform the move using (Stream sourceStream = OpenRead()) { using (Stream destinationStream = destination.OpenWrite()) { sourceStream.CopyTo(destinationStream); } } Delete(); } }
public void CopyTo(IFile destination, bool overwrite = true, bool createDirectory = true) { if (destination == null) { throw new ArgumentNullException(nameof(destination)); } // Create the directory if (createDirectory) { destination.Directory.Create(); } // Use the file system APIs if destination is also in the file system if (destination is LocalFile) { LocalFileProvider.Retry(() => _file.CopyTo(destination.Path.FullPath, overwrite)); } else { // Otherwise use streams to perform the copy using (Stream sourceStream = OpenRead()) { using (Stream destinationStream = destination.OpenWrite()) { sourceStream.CopyTo(destinationStream); } } } }
public Stream OpenAppend(bool createDirectory = true) { if (createDirectory) { Directory.Create(); } return(LocalFileProvider.Retry(() => _file.Open(FileMode.Append, FileAccess.Write, FileShare.ReadWrite))); }
public void WriteAllText(string contents, bool createDirectory = true) { if (createDirectory) { Directory.Create(); } LocalFileProvider.Retry(() => System.IO.File.WriteAllText(_file.FullName, contents)); }
public IEnumerable <IFile> GetFiles(SearchOption searchOption = SearchOption.TopDirectoryOnly) => LocalFileProvider.Retry(() => _directory.GetFiles("*", searchOption).Select(file => new LocalFile(file.FullName)));
public IEnumerable <IDirectory> GetDirectories(SearchOption searchOption = SearchOption.TopDirectoryOnly) => LocalFileProvider.Retry(() => _directory.GetDirectories("*", searchOption).Select(directory => new LocalDirectory(directory.FullName)));
public void Delete(bool recursive) => LocalFileProvider.Retry(() => _directory.Delete(recursive));
public void Create() => LocalFileProvider.Retry(() => _directory.Create());
public Stream OpenRead() => LocalFileProvider.Retry(() => _file.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
public string ReadAllText() => LocalFileProvider.Retry(() => System.IO.File.ReadAllText(_file.FullName));
public void Delete() => LocalFileProvider.Retry(() => _file.Delete());