Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить дату модификации файла 
:(
    Опции темы
d06osipov
Дата 1.11.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 1.11.2006

Репутация: нет
Всего: нет



Необходимо, по возможности, как можно более мультисистемно получить дату модификации файла. То есть с использованием стандартных библиотек, будь то STL, или просто стандартные библиотеки. Если не возможно, подскажите, по крайней мере, как сделать это под Windows, хотя, вроде странно, что не удалось найти информацию по этому поводу: необходимость этого часто возникает во многих в том числе мультисистемных приложениях.
PM MAIL   Вверх
Daevaorn
Дата 1.11.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(d06osipov @  1.11.2006,  11:44 Найти цитируемый пост)
вроде странно, что не удалось найти информацию по этому поводу

Очень странно.
Перносимый вариант boost::filesystem
Не переносимый вариант WinApi
PM MAIL WWW   Вверх
sergejzr
Дата 1.11.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Вообще то..
man stat:

Цитата

     #include <sys/types.h>
     #include <sys/stat.h>

     int
     stat(const char *path, struct stat *sb);

struct stat {
         dev_t    st_dev;    /* device inode resides on */
         ino_t    st_ino;    /* inode's number */
         mode_t   st_mode;   /* inode protection mode */
         nlink_t  st_nlink;  /* number or hard links to the file */
         uid_t    st_uid;    /* user-id of owner */
         gid_t    st_gid;    /* group-id of owner */
         dev_t    st_rdev;   /* device type, for special file inode */
         struct timespec st_atimespec;  /* time of last access */
         struct timespec st_mtimespec;  /* time of last data modification */
         struct timespec st_ctimespec;  /* time of last file status change */
         off_t    st_size;   /* file size, in bytes */
         quad_t   st_blocks; /* blocks allocated for file */
         u_long   st_blksize;/* optimal file sys I/O ops blocksize */
         u_long   st_flags;  /* user defined flags for file */
         u_long   st_gen;    /* file generation number */
     };

struct timespec {
                      long    tv_sec;         /* Sekunden */
                      long    tv_nsec;        /* Nanosekunden */
              };

пользоваться так:
Код

int main()
{
char * filepath="C:\\1.txt";
struct stat sb;
stat(filepath, &sb);
//теперь можешь опросить все поля структуры sb. как в мане описано
printf("time of last data modification %i \n",sb.tv_sec.st_mtimespec);
//секунды вроде юниксовские. Но точно не знаю. Посмотри.
return 0;
}



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
d06osipov
Дата 1.11.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 1.11.2006

Репутация: нет
Всего: нет



2Daevaorn: вообще-то boost::filesystem я причислил к непереносимым, поэтому вариант был отметён, в худшем случае пришлось бы делать WINAPI, но слава Богу, sergejzr подсказал мне замечательный вариант о котором раньше я не догадывался. Спасибо. Тема закрыта.
PM MAIL   Вверх
archimed7592
Дата 1.11.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



точно не уверен, но вроде stat есть в POSIX'е. могу ошибаться.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Любитель
Дата 2.11.2006, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(d06osipov @  1.11.2006,  13:01 Найти цитируемый пост)
вообще-то boost::filesystem я причислил к непереносимым

Почему? Она работает везде, где есть POSIX API (а stat - часть POSIX-а) + где есть WindowsAPI. + большое удобство. По-моему, гораздо переносимой. Смотрим сюда

Добавлено @ 10:34 
Бесспорно boost::filesystem переносимей, чем stat. И красивей (не удержался повториться)


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.