Как получить время файла по имени в Windows?

Windows имеет API GetFileTime, который позволяет получать время файла информация по дескриптору открытого файла. Я хотел знать, можно ли получить эту информацию по имени файла, не открывая файл явно. И если возможно, это также применимо к платформе Windows Mobile?


person Szere Dyeri    schedule 09.12.2008    source источник


Ответы (4)


Если вы вызываете CreateFile со значением dwFileAccess, равным нулю, он "указывает доступ устройства к приложение может запрашивать атрибуты устройства, не обращаясь к устройству." Непонятно, почему они удалили этот действительно информативный фрагмент текста из более новых версий документации, поскольку реализация в FSD осталась прежней.

person ctacke    schedule 09.12.2008
comment
Что такое ФСД? Обычная документация Win32 CreateFile говорит то же самое о нулевом значении dwFileAccess. Из какой версии документации он был удален? - person Rob Kennedy; 10.12.2008
comment
FSD == Драйвер файловой системы. Документы CE 6.0 удалили примечание: msdn.microsoft.com/en-us /библиотека/aa914735.aspx - person ctacke; 10.12.2008
comment
Может, убрали документацию, потому что это может зависеть от реализации FSD? Отличная информация, но CreateFile — это такой сложный API, что легко пропустить что-то подобное. - person Shane Powell; 10.12.2008
comment
@Shane: Как и во всем в CE, OEM получает последнее слово в том, как все работает, так что да, FSD можно модифицировать таким образом. Хотя его можно изменить, чтобы даже не открывать файл в этом отношении. Я предполагаю, что это было пропущено по ошибке (и я, вероятно, должен потратить время, чтобы исправить это). - person ctacke; 12.12.2008

Одной из возможностей может быть использование FindFirstFile, если вы хотите придерживаться Windows API. Он также доступен в Windows CE.

person crashmstr    schedule 09.12.2008
comment
Я пробовал то, что вы предложили раньше. Это работает, но я на самом деле искал что-то более эффективное. Спасибо. - person Szere Dyeri; 10.12.2008

GetFileTime доступен во всех версиях Windows CE. Вы вряд ли найдете способ сделать это без действительного дескриптора файла в Win32.

person TheSmurf    schedule 09.12.2008

Просто примечание об использовании времени файла в файле WinCE:

Цитата из документов MSDN на WinCE GetFileTime

Хранилище объектов Windows CE возвращает одинаковое время для всех трех параметров. Как правило, драйверы файловой системы по-разному поддерживают эту функцию.

Я обнаружил, что это верно на всех устройствах, которые я пробовал.

person Shane Powell    schedule 10.12.2008
comment
Я могу получить разные значения. Такое поведение, вероятно, зависит от устройства. Спасибо за информацию. - person Szere Dyeri; 13.12.2008