Недавно я попал в проект, где у них проблемы со слишком большим количеством файлов в папке, что замедляет доступ. Я считаю, что это более 10 000 файлов в одной папке, где окна начинают замедлять доступ, у нас их порядка 50 000. Все файлы небольшие, и в большинстве случаев нам нужен только доступ к новейшим .1–2.% Из них через файлы Windows и совместное использование печати. Я бы рассмотрел разделение файлов на подпапки, за исключением того, что есть куча устаревшего кода, который может просматривать только одну папку.
Моя идея - я не знаю, возможно ли это или хотя бы правдоподобно - состоит в том, чтобы создать небольшую программу, которая буферизует самые новые файлы .1–2% в памяти, а остальное извлекает с диска по мере необходимости.
Я думал, что много лет назад я прочитал о протоколе, который может имитировать папку на жестком диске. Является ли это возможным?
Есть ли что-то, что уже делает это? Есть ли лучший вариант без серьезных изменений в системе?
Что использовать в других системах для обслуживания большого количества файлов? Есть ли другой продукт, обслуживающий файлы, которые мы могли бы сопоставить как сетевой диск? Или как-то соединить две папки так, чтобы они выглядели как одна?
1 ответ
Если отложить в сторону "правильный способ решения этой проблемы" на данный момент, то, что вы ищете, называется "Расширения пространства имен оболочки". Есть несколько ресурсов .NET для написания этих расширений проводника.
- http://namespaceextension.codeplex.com/
- http://www.codeproject.com/Articles/1649/The-Complete-Idiot-s-Guide-to-Writing-Namespace-Ex
- http://www.codeproject.com/Articles/13515/A-Namespace -Extension-Toolkit И, возможно, многое другое.
Конечно, мы должны помнить, почему это не так. Писать расширения проводника в .NET - не лучшая идея.
Надеюсь это поможет.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.