Click here to Skip to main content
Click here to Skip to main content

Modifying the Date Attributes of a File

, 6 Aug 2013
Rate this:
Please Sign up or sign in to vote.
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

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.

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.

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.

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.

/// <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)

About the Author

d.moncada

United States United States
Software Engineer - San Diego, CA

Comments and Discussions

 
QuestionAwesome! PinmemberPMBottas13-Aug-13 15:53 
AnswerRe: Awesome! Pinmemberd.moncada13-Aug-13 16:13 
GeneralMy vote of 5 Pinmemberfredatcodeproject7-Aug-13 21:39 
QuestionSuggestion for going from 5 to 5+++ Pinmemberdandy727-Aug-13 10:52 
AnswerRe: Suggestion for going from 5 to 5+++ Pinmemberd.moncada7-Aug-13 11:03 
SuggestionFAR Manager PinmemberVitaly Tomilov7-Aug-13 8:57 
GeneralRe: FAR Manager Pinmemberd.moncada7-Aug-13 14:46 
GeneralRe: FAR Manager PinmemberVitaly Tomilov7-Aug-13 22:45 
GeneralMy vote of 5 PinmemberArash M. Dehghani6-Aug-13 22:50 
GeneralRe: My vote of 5 Pinmemberd.moncada7-Aug-13 4:36 
GeneralRe: My vote of 5 PinmemberArash M. Dehghani7-Aug-13 4:47 
GeneralMy vote of 4 Pinmemberfredatcodeproject6-Aug-13 5:30 
GeneralRe: My vote of 4 Pinmemberd.moncada6-Aug-13 5:49 
GeneralRe: My vote of 4 Pinmemberfredatcodeproject7-Aug-13 1:28 
GeneralRe: My vote of 4 Pinmemberd.moncada7-Aug-13 4:37 
GeneralRe: My vote of 4 Pinmemberfredatcodeproject7-Aug-13 21:37 
Questionvery tasty I wanna eat PinmemberProgrammer Pavel17-Jul-13 3:05 
GeneralMy vote of 5 Pinmembernewton.saber8-Jul-13 1:57 
GeneralRe: My vote of 5 Pinmemberd.moncada9-Jul-13 6:50 
QuestionAwesome Tool PinmemberH.Brydon7-Jul-13 15:41 
AnswerRe: Awesome Tool Pinmemberd.moncada7-Jul-13 17:06 

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

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

| Advertise | Privacy | Mobile
Web01 | 2.8.140721.1 | Last Updated 7 Aug 2013
Article Copyright 2013 by d.moncada
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid