Я пытаюсь рассчитать общий размер всех файлов, в которых последнее время записи находится раньше, чем через 10 минут в указанном каталоге , который имеет большую сумму данных. Здесь идет код я попытался ниже:Ошибка System.IO.IOException при попытке получить имена файлов
DateTime from_date = DateTime.Now.AddMinutes(-10);
List<string> list = Directory.GetFiles(@[PATH], "*", SearchOption.AllDirectories)
.Where(x => File.GetLastWriteTime(x).Date > from_date)
.Select(x => new FileInfo(x).FullName)
.ToList();
foreach (String s in list)
{
FileInfo file = new FileInfo(s);
size += file.Length;
}
button6.Text = ((size/1024f)/1024f) + "MB";
Это работает, когда я указать путь местного, но бросает мне сетевое имя больше не доступно IOException при указании сетевого пути. Почему это происходит? Есть ли способ, по которому я могу «удерживать» сетевой путь или убедиться, что соединение с этим путем не сработает?
Звучит как странная сетевая проблема для меня. Файловый сервер отключается, логин истекло. Поговорите с администратором локальной сети. Всегда используйте гораздо лучший метод DirectoryInfo.EnumerateFiles() в .NET 4.0. –
@HansPassant Почему DirectoryInfo.EnumerateFiles() намного лучше? В чем разница? Смогу ли я использовать что-то близкое к SearchOption.AllDirectories на нем? – cgalvao1993
Он не совершает круговые поездки туда и обратно на сервер. Таким образом, это * много быстрее, вы можете использовать это, если ваша сеть нестабильна. Каталог DirectoryInfo.EnumerateDirectories имеет параметр AllDirectories. Кстати, похоже, что вы действительно должны использовать FileSystemWatcher. –