Hi,

Does anyone know how to check for a file access date and time? The function returns the modified date and time and i need something that compares the accessed date time to the current date and time.

regards
prasad....

Recommended Answers

All 12 Replies

If you are programming for windows you can use the GetFileTime( ) API to retrieve the Created/LastAccessed/and Last Modified times. These are output in the FILETIME structure, so you will have to use the FileTimeToSystemTime() in order to change the FILETIME structure to a SYSTEMTIME structure.
After that , you can get the current systemtime using the GetSystemTime() and compare this with the times you got for the file.

You can find more in

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/time_functions.asp

Thank you so much for ur response.

im still confused of using this....the time and date is not displyg properly,
can any1 explin me how to print the date and time..

Have you been able to get the dates and times? The thing is that SYSTEMDATE is not in the usual "yy mm dd" format. To display this in the way we all understand, you will have to use GetDateFormat and GetTime Format functions. Better is you give us the code up to where you have got the file times and system times. Then it is easier to narrow out the problem.

look at this code..its working, but not displyg the time properly.

im getg the output like..

last modified date and time = 15-06-05 00:00:00 

but im get the current time and date correctly.

currrent time =3:11:44
current date =16/05/05

the next thing what im trying is, to compare both the last modified time and date to the current date and time. can u explain me how to do that...

my code is:

char filename[] = "c:test.txt";
             if (!stat(filename, &buf))
    {
        struct tm* atime = localtime(&buf.st_atime);

        strftime(timeStr, 100, "%d-%m-%Y %H:%M:%S", atime);


        printf("nLast modified date and time = %sn", timeStr);
    }
    else
        printf("error getting atimen");
    _strtime(time);
    _strdate(date);
    printf("nThe Current time is %sn",time);
    printf("nThe Current Date is %sn",date);

thanx in advance,

regards
prasad

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

int main()
{
	char filename[] = "c:\\test.txt";
	char timeStr[ 100 ] = "";
	struct stat buf;
	time_t ltime;
	char datebuf [9];
	char timebuf [9];

	if (!stat(filename, &buf))
	{
		strftime(timeStr, 100, "%d-%m-%Y %H:%M:%S", localtime( &buf.st_mtime));
		printf("\nLast modified date and time = %s\n", timeStr);
	}
	else
	{
		printf("error getting atime\n");
	}
	_strtime(timebuf);
	_strdate(datebuf);
	printf("\nThe Current time is %s\n",timebuf);
	printf("\nThe Current Date is %s\n",datebuf);
	time( &ltime );
	printf("\nThe Current time is %s\n",ctime( &ltime ));
	printf("\Diff between current and last modified time ( in seconds ) %f\n", difftime(ltime ,buf.st_mtime ) );
	return 0;
}

My Output was
Last modified date and time = 06-04-2005 17:24:12

The Current time is 10:25:53

The Current Date is 06/17/05

The Current time is Fri Jun 17 10:25:53 2005

Diff between current and last modified time ( in seconds ) 6195701.000000

Thanku so much...

From ur code i can find only the last modified date and time..
ie only i changd something in that file will be reflected.

what i need is the last accessed time...
can u help me for that..

thanks in advance

regards
prasad

Use buf.st_atime instead of buf.st_mtime. That is the last accessed time. But keep in mind that since you are accessing that file in your program, the result will be the time you run the program. Even if you right click the file in Windows ( at least in my Windows 2000 OS ) and select properties, you will see that the last accessed time is the time you right clicked the file. I dont know anyway of getting around that. I personally think that the last modified time ( buf.st_mtime) is the one that matters the most in your application. But it can be otherwise. Good luck.

I think I figured out the problem. It is the File System which makes the stat::a_time come out the same. I found the below in the documentation.

st_atime
Time of last access of file. Valid on NTFS but not on FAT formatted disk drives. Gives the same

Try running this in an NTFS partition, and check the results. Hopefully there will be an improvement in results.

I have one more problem in the above code..

i need to compare the last modified time and date of the same file.

ie., first im storing the last modified date and time of the file 'test.txt', then after sometimes or after some days, im again modifing the same file...and storing the date and time...then im comparg those two date and time...

like that i want to store the last two modified date and time......

i hope u will understand my problem..

regards,
prasad

You will have to use a mechanism of your own, like storing the file name and the dates you require to a file. No built in mechanisms in Windows for it.

can u plz tell me how to store the previously modified date and time.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.