Необходимо создать библиотеку, реализующую доступ к виртуальной файловой системе, физически хранящую все данные в одном файле. Библиотека должна поддерживать иерархию каталогов, имена файлов большой длины. Для каждого файла нужно хранить имя, содержимое, время создания, и время модификации. Библиотека должна позволять выполнять следующие операции: Создание папки Создание файла Удаление файла/папки Перемещение/переименование файла/папки Копирование файла/папки Поиск файлов по маске в данном каталоге (в т.ч. рекурсивно). API для поиска файлов должно предоставлять итератор, а не возвращать сформированный список. Чтение/запись в файл (последовательно и с произвольным доступом, а также изменение размера файла) Импорт содержимого папки из реальной файловой системы или другой такой же виртуальной системы Библиотека должна позволять многопоточный доступ к файловой системе с разделением блокировок на чтение и запись. Если файл внутри системы открыт на запись, система должна запрещать любой параллельный доступ к содержимому файла. Если файл открыт на чтение, то система должна разрешать параллельное чтение, но запрещать любые операции модификации по всему пути до корня. К библиотеке должен поставляться оконный пользовательский интерфейс позволяющий открыть некоторый экземпляр виртуальной файловой системы (или создать новый) и производить в нём все указанные операции. Долговременные операции должны выполняться в отдельном потоке и не блокировать дальнейшее взаимодействие с системой, в т.ч. и запуск других операций. Внешний вид программы может быть произвольным, например, дерево папок в одной панели и содержимое папки в другой. Оценивается правильность работы программы, качество кода, дизайн системы и API. По спорным или недоспецифицированным вопросам примите решение самостоятельно.