Основные архитектурные решения. 1. Файлы хранятся последовательно друг за другом, с небольшим зазором. Плюсы: простота реализации (не нужно вводить блоки). Минусы: нетривиальный алгоритм перемещения при наползании файла на следующий, сильная фрагментация (решается периодической дефрагментацией, которая пока не реализована, или использованием FsDisk поверх GZipStream). 2. Папки и подпапки хранятся в виде сортированного списка. Плюсы: ни одна операция не требует рекурсии, легко реализуется поиск в подпапках. Минусы: внутри приходится использовать специальный символ-разделитель пути (чтобы пути сортировались правильно) и постоянно преобразовывать приходящие извне строки. 3. Метаданные (таблица папок и файлов) сериализуются бинарной сериализацией и сохраняются в начале физического файла. Плюсы: простота реализации. Минусы: занимает значительно больше места, чем если бы использовался собственный формат; при наползании метаданных на первый файл, опять же, происходит перемещение. 4. Доступ из разных потоков синхронизируется с помощью контекста синхронизации. Плюсы: простота реализации. Минусы: в данном случае нет минусов. Для тестирования параллельного доступа есть кнопка "Start massive test in a separate thread", запускающая поток с интенсивными операциями создания/изменения/удаления файлов. Замечания. Путь к файлу или папке должен представлять собой UNC-путь, например, \\test folder\test file1.txt Таблица файлов и папок сохраняется на диск только в методе Dispose(), соответственно, его обязательно нужно вызывать. В качестве улучшения можно было бы реализовать периодическое фоновое сохранение. Длина файла задается типом int. Соответственно, ограничение на длину - 4ГБ. Размер физического файла также не может быть больше. Методы поиска файлов возвращают итераторы, но если параллельный поток изменит список файлов, перебор итератора может вызвать исключение. Считаем, что это нормально. Disclaimer: прилагаемый оконный пользовательский интерфейс ужасен, его код не соответствует никаким стандартам и ничего не демонстрирует. Если вас интересуют юнит-тесты, готов их реализовать и предоставить.