2013-03-05 5 views
1

Ну, я создаю многочисленные файлы, используя метод FileInfo.Create(), а затем через какое-то время я просматриваю все файлы, созданные в эту дату.Временные отметки о странных файлах

oCurrentFile 
    = new FileInfo(oFileRegion.Directory.FullName + "\\" + _traceFilePrefix 
        + sIdentifier + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss.ffff") + _traceFileExt); 
FileStream fs = oCurrentFile.Create(); fs.Close(); 

Это работало очень хорошо в течение многих дней! Недавно я попытался собрать все файлы, которые были созданы вчера.

IEnumerable<FileInfo> oldFiles = 
    (from oldFile in oldFiles 
    where oldFile.CreationTime.DayOfYear == DateTime.Now.Substract(new TimeSpan(1,0,0,0).DayOfYear 
    orderby oldFile.CreationTime ascending 
    select oldFile) 

Когда я посмотрел количество файлов с помощью .Count() сюрприз был большой: .

Так что я проверил, почему он не нашел каких-либо файлов и заметил, что все мои файлы имели следующую дату создания:

01.01.1601 00: 00: 00,000

Какого черта? Что вызывает такое странное поведение? И почему Windows перестала получать даты создания прямо из ниоткуда?

ответ

1

У меня было такое же поведение для файлов, которые FileInfo не думал. Убедитесь, что файл существует, и что он был создан ПЕРЕД объектом FileInfo. В противном случае вам нужно вызвать FileInfo.Refresh(), чтобы данные состояния в объекте FileInfo обновлялись.

Смежные вопросы