public void Drop(TKey entityKey)
        {
            var folder   = FilesystemLocator.FindSnapshotFolder(entityKey, options);
            var entities = fileSystem.GetEntitiesRecursive(folder).ToList();

            foreach (var entity in entities)
            {
                fileSystem.Delete(entity);
            }
        }
        private IOrderedEnumerable <FileSystemPath> GetExistingFiles(TKey key)
        {
            var folder = FilesystemLocator.FindSnapshotFolder(key, options);

            if (!fileSystem.Exists(folder))
            {
                fileSystem.CreateDirectoryRecursive(folder);
            }
            return(fileSystem.GetEntities(folder)
                   .Where(path => path.IsFile)
                   .Where(path => fileSystem.Exists(path))
                   .OrderBy(x => TimeFromFilename(x)));
        }
        private Stream CreateNewFile(TKey key, long time, int requiredEmptyBytes)
        {
            var fileName = ToFilename(time, zeroPaddingStep);
            var filePath = FilesystemLocator.FindSnapshotFolder(key, options)
                           .AppendFile(fileName);

            using (var fileStream = fileSystem.CreateFile(filePath))
            {
                var data = new byte[zeroPaddingStep];
                data[zeroPaddingStep - 1] = 255;
                fileStream.Write(data, 0, zeroPaddingStep);
            }
            var stream = fileSystem.OpenFile(filePath, FileAccess.ReadWrite);

            return(SeekOrReopen(stream, filePath, zeroPaddingStep - 1, requiredEmptyBytes));
        }