2004-04-02 Dick Porter <dick@ximian.com>
[mono.git] / mcs / class / corlib / System.IO / FileSystemInfo.cs
index b03e43395cdd6d6fa9c2fba974041f3e2b9bf69a..1223518df92318485460f94a4d29c20e52f06f00 100644 (file)
@@ -41,8 +41,13 @@ namespace System.IO {
                        }
 
                        set {
-                               if (!MonoIO.SetFileAttributes (FullName, value))
-                                       throw MonoIO.GetException ();
+                               MonoIOError error;
+                               
+                               if (!MonoIO.SetFileAttributes (FullName,
+                                                              value,
+                                                              out error))
+                                       throw MonoIO.GetException (error);
+                               Refresh (true);
                        }
                }
 
@@ -55,8 +60,22 @@ namespace System.IO {
                        set {
                                long filetime = value.ToFileTime ();
                        
-                               if (!MonoIO.SetFileTime (FullName, filetime, -1, -1))
-                                       throw MonoIO.GetException ();
+                               MonoIOError error;
+                               
+                               if (!MonoIO.SetFileTime (FullName, filetime,
+                                                        -1, -1, out error))
+                                       throw MonoIO.GetException (error);
+                               Refresh (true);
+                       }
+               }
+
+               public DateTime CreationTimeUtc {
+                       get {
+                               return CreationTime.ToUniversalTime ();
+                       }
+
+                       set {
+                               CreationTime = value.ToLocalTime ();
                        }
                }
 
@@ -69,8 +88,24 @@ namespace System.IO {
                        set {
                                long filetime = value.ToFileTime ();
 
-                               if (!MonoIO.SetFileTime (FullName, -1, filetime, -1))
-                                       throw MonoIO.GetException ();
+                               MonoIOError error;
+                               
+                               if (!MonoIO.SetFileTime (FullName, -1,
+                                                        filetime, -1,
+                                                        out error))
+                                       throw MonoIO.GetException (error);
+                               Refresh (true);
+                       }
+               }
+
+               public DateTime LastAccessTimeUtc {
+                       get {
+                               Refresh (false);
+                               return LastAccessTime.ToUniversalTime ();
+                       }
+
+                       set {
+                               LastAccessTime = value.ToLocalTime ();
                        }
                }
 
@@ -83,8 +118,23 @@ namespace System.IO {
                        set {
                                long filetime = value.ToFileTime ();
 
-                               if (!MonoIO.SetFileTime (FullName, -1, -1, filetime))
-                                       throw MonoIO.GetException ();
+                               MonoIOError error;
+                               
+                               if (!MonoIO.SetFileTime (FullName, -1, -1,
+                                                        filetime, out error))
+                                       throw MonoIO.GetException (error);
+                               Refresh (true);
+                       }
+               }
+
+               public DateTime LastWriteTimeUtc {
+                       get {
+                               Refresh (false);
+                               return LastWriteTime.ToUniversalTime ();
+                       }
+
+                       set {
+                               LastWriteTime = value.ToLocalTime ();
                        }
                }
 
@@ -115,8 +165,16 @@ namespace System.IO {
                        if (valid && !force)
                                return;
 
-                       MonoIO.GetFileStat (FullName, out stat);
+                       MonoIOError error;
+                       
+                       MonoIO.GetFileStat (FullName, out stat, out error);
                        valid = true;
+                       
+                       InternalRefresh ();
+               }
+               
+               internal virtual void InternalRefresh ()
+               {
                }
 
                internal void CheckPath (string path)