2013-04-22 3 views
1

Есть ли альтернатива использованию функции fstat(), если вам просто нужен размер файла и дата создания?
Я знаю, что мы можем использовать ftell(), чтобы получить размер файла, но я хочу также время и дату создания. Причина, по которой я не хочу использовать fstat(), заключается в том, что требуется много времени, если список файлов длинный.Любая альтернатива fstat?

+0

Какая ОС вы используете? –

+0

'fstat' также дает вам размер, поэтому использование этой информации должно сократить количество операций. –

+6

Для использования файла fstat требуется открытое файл. Если вы собираетесь открывать файлы в списке, fstat - хороший выбор. Если нет, используйте stat(). А также. Любой из этих вызовов работает так же быстро, как и для поиска метаданных файлов. Если все, что вы хотите, это метаданные файлов. –

ответ

3

Если файл открыт, используйте fstat, если у вас есть только имя файла и не нужно открывать файл, используйте stat. Это так быстро, как только может. Независимо от того, какую функцию вы будете использовать, будет использоваться stat или fstat внутренне или, по крайней мере, их эквиваленты внутри ядра. Эти системные вызовы необходимо читать в метаданных из файловой системы, и если они не находятся в кеше, они перейдут на диск и потребуют времени. Об этом нет.

+0

+1. Если fstat медленный, это может быть, если i-узел каталога слишком велик. Использование меньших записей в каталогах может ускорить чтение метаданных в i-узле. – TrueY

+0

Большое спасибо за все комментарии. Я использовал fstat() для доступа к метаданным и получил время и дату создания. Я думал о том, чтобы получить только размер и время/дату создания вместо большой структуры, возвращаемой функцией fstat(). Из ответов я думаю, что нет других лучших альтернатив. – CatchMeIfYouTry

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