Click here to Skip to main content
15,881,172 members
Articles / Desktop Programming / WPF
Tip/Trick

Modifying the Date Attributes of a File

Rate me:
Please Sign up or sign in to vote.
5.00/5 (8 votes)
6 Aug 2013CPOL2 min read 44.6K   1.1K   10   20
Change the accessed, modified, and created date attributes of a file

Introduction

The File Date Modifier is a simplistic tool that allows the modification of date attributes (modified, accessed, created) for a single file or entire directory. It was developed using C#, WPF and the MVVM design pattern.

How to Use

Image 1

The Selected Path area allows you to browse to a specific file or choose an entire directory by selecting the Path Type and clicking the Browse button.

Once the path is selected, check which attributes you'll like to modify by clicking its associated check box.

Image 2

Using the DateTime picker, you are able to select individual sections of the date and time (day, month, year, hour, min, seconds) and increment/decrement its value using the up and down arrow.

Optionally, clicking the big down arrow will bring up a calendar/time picker.

Image 3

After a Path and at least one Attribute is selected, press the UPDATE button to modify. A message box will appear (with the number of changed files) upon successful write.

Image 4

Using the Code

Using .NET's System.IO, the file date attributes are able to be modified simply by calling File.SetCreationTime , File.SetLastAccessTime, and File.SetLastWriteTime while passing the file's full path and DateTime as the arguments.  

        /// <summary>
        /// Updates the date attribute information for a file.
        /// </summary>
        /// <param name="file">The file path</param>
        /// <param name="createdTime">The created time.</param>
        /// <param name="accessedTime">The accessed time.</param>
        /// <param name="modifiedTime">The modified time.</param>
        private void updateFileDateInfo(string file, DateTime createdTime, DateTime accessedTime, DateTime modifiedTime)
        {
            if (CreatedChecked)
            {
                File.SetCreationTime(file, createdTime);
            }
            if (AccessedChecked)
            {
                File.SetLastAccessTime(file, accessedTime);
            }
            if (ModifiedChecked)
            {
                File.SetLastWriteTime(file, modifiedTime);
            }
        } 

If the Path Type selected is Directory, the selected directory will be searched recursively while updating each file.

C#
/// <summary>
/// Updates the directory date information.
/// </summary>
/// <param name="dir">The directory</param>
private void updateDirDateInfo(string dir)
{
    foreach (var d in Directory.GetDirectories(dir))
    {
        foreach (var f in Directory.GetFiles(d))
        {
            _fileCountUpdated += 1;
            updateFileDateInfo(f, CreatedDateTime, AccessedDateTime, ModifiedDateTime);
        }
        
        updateDirDateInfo(d);
    }
}  

Additional Information

I needed to change specific date attributes of all files in a directory, but only found a few tools that changed individual files (not an entire directory). Since the directory I was working with contained around 100 different files, I decided to write this tool in order to ease the process of updating the date attributes of multiple files at the same time.

History  

  • 2013, Aug. 06 - Update source / tool to support globalization.   
  • 2013, July 07  - Initial publication 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
Software Engineer - San Diego, CA

Comments and Discussions

 
QuestionAwesome! Pin
PMBottas13-Aug-13 15:53
PMBottas13-Aug-13 15:53 
AnswerRe: Awesome! Pin
d.moncada13-Aug-13 16:13
d.moncada13-Aug-13 16:13 
GeneralMy vote of 5 Pin
fredatcodeproject7-Aug-13 21:39
professionalfredatcodeproject7-Aug-13 21:39 
QuestionSuggestion for going from 5 to 5+++ Pin
dandy727-Aug-13 10:52
dandy727-Aug-13 10:52 
AnswerRe: Suggestion for going from 5 to 5+++ Pin
d.moncada7-Aug-13 11:03
d.moncada7-Aug-13 11:03 
SuggestionFAR Manager Pin
Vitaly Tomilov7-Aug-13 8:57
Vitaly Tomilov7-Aug-13 8:57 
GeneralRe: FAR Manager Pin
d.moncada7-Aug-13 14:46
d.moncada7-Aug-13 14:46 
GeneralRe: FAR Manager Pin
Vitaly Tomilov7-Aug-13 22:45
Vitaly Tomilov7-Aug-13 22:45 
GeneralMessage Closed Pin
6-Aug-13 22:50
user55832086-Aug-13 22:50 
GeneralRe: My vote of 5 Pin
d.moncada7-Aug-13 4:36
d.moncada7-Aug-13 4:36 
GeneralMy vote of 4 Pin
fredatcodeproject6-Aug-13 5:30
professionalfredatcodeproject6-Aug-13 5:30 
GeneralRe: My vote of 4 Pin
d.moncada6-Aug-13 5:49
d.moncada6-Aug-13 5:49 
GeneralRe: My vote of 4 Pin
fredatcodeproject7-Aug-13 1:28
professionalfredatcodeproject7-Aug-13 1:28 
great
let me know
GeneralRe: My vote of 4 Pin
d.moncada7-Aug-13 4:37
d.moncada7-Aug-13 4:37 
GeneralRe: My vote of 4 Pin
fredatcodeproject7-Aug-13 21:37
professionalfredatcodeproject7-Aug-13 21:37 
Questionvery tasty I wanna eat Pin
Programmer Pavel17-Jul-13 3:05
Programmer Pavel17-Jul-13 3:05 
GeneralMy vote of 5 Pin
newton.saber8-Jul-13 1:57
newton.saber8-Jul-13 1:57 
GeneralRe: My vote of 5 Pin
d.moncada9-Jul-13 6:50
d.moncada9-Jul-13 6:50 
QuestionAwesome Tool Pin
H.Brydon7-Jul-13 15:41
professionalH.Brydon7-Jul-13 15:41 
AnswerRe: Awesome Tool Pin
d.moncada7-Jul-13 17:06
d.moncada7-Jul-13 17:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.