1 //------------------------------------------------------------------------------
3 // System.IO.FileSystemInfo.cs
5 // Copyright (C) 2001 Moonlight Enterprises, All Rights Reserved
7 // Author: Jim Richardson, develop@wtfo-guru.com
8 // Dan Lewis (dihlewis@yahoo.co.uk)
9 // Created: Monday, August 13, 2001
11 //------------------------------------------------------------------------------
18 public abstract class FileSystemInfo : MarshalByRefObject {
21 public abstract bool Exists { get; }
23 public abstract string Name { get; }
25 public virtual string FullName {
31 public string Extension {
33 return Path.GetExtension (Name);
37 public FileAttributes Attributes {
40 return stat.Attributes;
46 if (!MonoIO.SetFileAttributes (FullName,
49 throw MonoIO.GetException (error);
54 public DateTime CreationTime {
57 return DateTime.FromFileTime (stat.CreationTime);
61 long filetime = value.ToFileTime ();
65 if (!MonoIO.SetFileTime (FullName, filetime,
67 throw MonoIO.GetException (error);
72 public DateTime CreationTimeUtc {
74 return CreationTime.ToUniversalTime ();
78 CreationTime = value.ToLocalTime ();
82 public DateTime LastAccessTime {
85 return DateTime.FromFileTime (stat.LastAccessTime);
89 long filetime = value.ToFileTime ();
93 if (!MonoIO.SetFileTime (FullName, -1,
96 throw MonoIO.GetException (error);
101 public DateTime LastAccessTimeUtc {
104 return LastAccessTime.ToUniversalTime ();
108 LastAccessTime = value.ToLocalTime ();
112 public DateTime LastWriteTime {
115 return DateTime.FromFileTime (stat.LastWriteTime);
119 long filetime = value.ToFileTime ();
123 if (!MonoIO.SetFileTime (FullName, -1, -1,
124 filetime, out error))
125 throw MonoIO.GetException (error);
130 public DateTime LastWriteTimeUtc {
133 return LastWriteTime.ToUniversalTime ();
137 LastWriteTime = value.ToLocalTime ();
143 public abstract void Delete ();
145 public void Refresh ()
152 protected FileSystemInfo ()
155 this.FullPath = null;
158 protected string FullPath;
159 protected string OriginalPath;
163 internal void Refresh (bool force)
170 MonoIO.GetFileStat (FullName, out stat, out error);
176 internal virtual void InternalRefresh ()
180 internal void CheckPath (string path)
183 throw new ArgumentNullException ();
184 if (path.IndexOfAny (Path.InvalidPathChars) != -1)
185 throw new ArgumentException ("Invalid characters in path.");
188 internal MonoIOStat stat;