how to set file access time

Reply

Join Date: Jan 2005
Posts: 16
Reputation: akoloff is an unknown quantity at this point 
Solved Threads: 0
akoloff akoloff is offline Offline
Newbie Poster

how to set file access time

 
0
  #1
Aug 20th, 2005
Here the code where I'm trying to set last-accessed attribute of the file to some value.

  1. hFile = CreateFile(szDestName.GetBuffer(255), GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
  2.  
  3. GetFileTime(hFile,&createTime,&accessTime,&writeTime);
  4. writeTime.dwHighDateTime -= 1000L;
  5. accessTime = writeTime;
  6.  
  7. SetFileTime(hFile,&createTime,&accessTime,&writeTime);
  8. // at this point access and write(modified) times are equal
  9. CloseHandle(hFile);
  10. // at this point access time is changed to the current system time

I suppose I didn't set the correct attributes in CreateFile function.
Does anybody knows how to do this correctly?
Last edited by Dave Sinkula; Aug 20th, 2005 at 3:40 pm. Reason: Added [code][/code] tags.
Reply With Quote Quick reply to this message  
Join Date: Aug 2005
Posts: 15,348
Reputation: Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute 
Solved Threads: 1461
Team Colleague
Featured Poster
Ancient Dragon's Avatar
Ancient Dragon Ancient Dragon is offline Offline
Still Learning

Re: how to set file access time

 
0
  #2
Aug 20th, 2005
you can't control the time because, as you found out, the os will change it when the file is closed.
Originally Posted by MSDN
Not all file systems can record creation and last access time and not all file systems
record them in the same manner. For example, on Windows NT FAT, create time has a
resolution of 10 milliseconds, write time has a resolution of 2 seconds, and access time
has a resolution of 1 day
(really, the access date). On NTFS, access time has a
resolution of 1 hour. Therefore, the GetFileTime function may not return the same file
time information set using SetFileTime. Furthermore, FAT records times on disk in local
time. However, NTFS records times on disk in UTC, so it is not affected by changes in
time zone or daylight saving time.
Reply With Quote Quick reply to this message  
Join Date: Jan 2005
Posts: 16
Reputation: akoloff is an unknown quantity at this point 
Solved Threads: 0
akoloff akoloff is offline Offline
Newbie Poster

Re: how to set file access time

 
0
  #3
Aug 21st, 2005
I found out that if you use:

CreateFile(szDestName.GetBuffer(255), 0, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);

instead of:
CreateFile(szDestName.GetBuffer(255), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);

then you can't read or write to the file obviously BUT:
you can check for the file existence without changing
it's access time, which was good enough in my case.

Thanks for your reply anyway.
Reply With Quote Quick reply to this message  
Join Date: Aug 2005
Posts: 15,348
Reputation: Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute 
Solved Threads: 1461
Team Colleague
Featured Poster
Ancient Dragon's Avatar
Ancient Dragon Ancient Dragon is offline Offline
Still Learning

Re: how to set file access time

 
0
  #4
Aug 21st, 2005
If all you wanted to do what check for the file's existance then use GetFileAttributes(). That function returns -1 if the file doesn't exist. Or you could also use _stat() function, which also returns error when file not found.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC