/* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. * * Licensed 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.Collections.Generic; namespace QuantConnect.Lean.Engine.Storage { /// /// Raw file handler /// /// Useful to abstract file operations for public class FileHandler { /// /// True if the given file path exists /// public virtual bool Exists(string path) { return File.Exists(path); } /// /// Will delete the given file path /// public virtual void Delete(string path) { File.Delete(path); } /// /// Will write the given byte array at the target file path /// public virtual void WriteAllBytes(string path, byte[] data) { File.WriteAllBytes(path, data); } /// /// Read all bytes in the given file path /// public virtual byte[] ReadAllBytes(string path) { return File.ReadAllBytes(path); } /// /// Will try to fetch the given file length, will return 0 if it doesn't exist /// public virtual long TryGetFileLength(string path) { var fileInfo = new FileInfo(path); if (fileInfo.Exists) { return fileInfo.Length; } return 0; } /// /// True if the given directory exists /// public virtual bool DirectoryExists(string path) { return Directory.Exists(path); } /// /// Create the requested directory path /// public virtual DirectoryInfo CreateDirectory(string path) { return Directory.CreateDirectory(path); } /// /// Enumerate the files in the target path /// public virtual IEnumerable EnumerateFiles(string path, string pattern, SearchOption searchOption, out string rootfolder) { var directoryInfo = new DirectoryInfo(path); rootfolder = directoryInfo.FullName; return directoryInfo.EnumerateFiles(pattern, searchOption); } } }