C# - Állomány idő lekérdezés, beállítás programból

forráskód letöltése
Egy-egy állomány időpontjait azon túlmenően, hogy lekérdezhetjük programból, még arra is lehetőségünk nyílik, hogy be is állítsuk. Ezzel mi magunk szabályozhatjuk, hogy az állománynál megjelenő létrehozási, módosítási és egyéb időpont mi legyen, nem pedig a tényleges dátumtól is időponttól függenek ezen értékek.
Első lépésként készítsünk egy listát a C meghajtó gyökerében lévő állományokról egy ListView kontrolba.
    private void button1_Click(object sender, System.EventArgs e)
    {
      ListViewItem lvi;
      string[] items;
      listView1.Items.Clear();
Ehhez a Directory osztály GetFiles függvényét használhatjuk, mely egy sztringeket tartalmazó tömböt ad vissza. A tömb minden eleme tartalmaz egy-egy állomány nevet. Ezen a tömbön egy foreach ciklussal végigszaladhatunk egyszerűen.
      foreach (string filename in Directory.GetFiles("c:\\"))
      {
Mivel a ListView-et részletes nézetben használjuk, így készítenünk kell egy sztring tömböt, melyben a megjelenő elemek kapnak helyet. Elsőként természetesen az állomány neve.
        items = new String[]{
                              filename, 
Az állomány név után meghatározzuk annak létrehozási, utolsó hozzáférési és utolsó módosítási időpontját. Ehhez a File osztály három statikus függvényére lesz szükségünk, melyek mindegyike egy-egy állomány nevet vár paraméterként sztring típusban. Visszatérési értékük pedig a kérdéses időpont lesz.
                              File.GetCreationTime(filename).ToString(),
                              File.GetLastAccessTime(filename).ToString(),
                              File.GetLastWriteTime(filename).ToString()
                            };
        lvi = new ListViewItem(items, 0);        
        listView1.Items.Add(lvi);        
      }
    }
A File osztály Getxxx függvényeinek megfelelően megtalálható a Setxxx párjuk is, mely az adott időpont érték beállítására szolgál. Itt paraméterként az állomány nevét sztringként, valamint az új dátum és időpontot kell megadnunk DateTime típusként és a beállítás már meg is történt.
    private void button2_Click(object sender, System.EventArgs e)
    {
      File.SetCreationTime("c:\\autoexec.bat", new DateTime(2001, 1, 1, 0, 0, 0, 0));
      File.SetLastAccessTime("c:\\autoexec.bat", new DateTime(2001, 1, 1, 0, 0, 0, 0));
      File.SetLastWriteTime("c:\\autoexec.bat", new DateTime(2001, 1, 1, 0, 0, 0, 0));
      button1_Click(null, null);
    }