А>Вот сейчас задумался, как? GetFileAttributes или всё же FindFirstFile (путь куда — к файлу или папке, на локальном или сетевом хранилище — неизвестно)
1) GetFileAttributes — один сисколл (NtQueryAttributesFile), FindFirstFile — три штуки (NtOpenFile/NtQueryDirecoryFile/NtClose).
2) Мона так настроить права доступа что к директории доступа не будет а к файлу в ней — будет. GetFileAttributes в этом случае сработает а FindFirstFile скажет access denied.
3) GetFileAttributes тупо требует написать меньше кода.
Так что я предпочитаю GetFileAttributes. Может кто-то знает преимущества FindFirstFile перед ней, я — так сходу не могу придумать.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Аноним, Вы писали:
А>Вот сейчас задумался, как? GetFileAttributes или всё же FindFirstFile (путь куда — к файлу или папке, на локальном или сетевом хранилище — неизвестно)
Единственный правильный способ проверить путь — это попытаться сделать с ним то, что вы собираетесь с ним делать. Записать в него файл, прочитать из него файл, удалить из него файл, создать в нём подкаталог. Если удалось, хорошо. Если не удалось, ловим код ошибки и показываем пользователю.
Иначе вам придётся продублировать код проверки прав, и всё равно будут случаи, что сейчас права есть, а через 200 миллисекунд их не будет. А в особо тяжёлых случаях возможны security-дыры.
Здравствуйте, ononim, Вы писали:
А>>Вот сейчас задумался, как? GetFileAttributes или всё же FindFirstFile (путь куда — к файлу или папке, на локальном или сетевом хранилище — неизвестно) O>1) GetFileAttributes — один сисколл (NtQueryAttributesFile), FindFirstFile — три штуки (NtOpenFile/NtQueryDirecoryFile/NtClose). O>2) Мона так настроить права доступа что к директории доступа не будет а к файлу в ней — будет. GetFileAttributes в этом случае сработает а FindFirstFile скажет access denied. O>3) GetFileAttributes тупо требует написать меньше кода. O>Так что я предпочитаю GetFileAttributes. Может кто-то знает преимущества FindFirstFile перед ней, я — так сходу не могу придумать.
А как, кстати, работает PathFileExists, не подскажете?