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 //------------------------------------------------------------------------------
14 using System.Runtime.InteropServices;
15 using System.Runtime.Serialization;
20 public abstract class FileSystemInfo : MarshalByRefObject, ISerializable {
21 #region Implementation of ISerializable
24 public virtual void GetObjectData (SerializationInfo info, StreamingContext context)
26 info.AddValue ("OriginalPath", OriginalPath, typeof(string));
27 info.AddValue ("FullPath", FullPath, typeof(string));
30 #endregion Implementation of ISerializable
34 public abstract bool Exists { get; }
36 public abstract string Name { get; }
38 public virtual string FullName {
44 public string Extension {
46 return Path.GetExtension (Name);
50 public FileAttributes Attributes {
53 return stat.Attributes;
59 if (!MonoIO.SetFileAttributes (FullName,
62 throw MonoIO.GetException (error);
67 public DateTime CreationTime {
70 return DateTime.FromFileTime (stat.CreationTime);
74 long filetime = value.ToFileTime ();
78 if (!MonoIO.SetFileTime (FullName, filetime,
80 throw MonoIO.GetException (error);
86 public DateTime CreationTimeUtc {
88 return CreationTime.ToUniversalTime ();
92 CreationTime = value.ToLocalTime ();
96 public DateTime LastAccessTime {
99 return DateTime.FromFileTime (stat.LastAccessTime);
103 long filetime = value.ToFileTime ();
107 if (!MonoIO.SetFileTime (FullName, -1,
110 throw MonoIO.GetException (error);
116 public DateTime LastAccessTimeUtc {
119 return LastAccessTime.ToUniversalTime ();
123 LastAccessTime = value.ToLocalTime ();
127 public DateTime LastWriteTime {
130 return DateTime.FromFileTime (stat.LastWriteTime);
134 long filetime = value.ToFileTime ();
138 if (!MonoIO.SetFileTime (FullName, -1, -1,
139 filetime, out error))
140 throw MonoIO.GetException (error);
146 public DateTime LastWriteTimeUtc {
149 return LastWriteTime.ToUniversalTime ();
153 LastWriteTime = value.ToLocalTime ();
159 public abstract void Delete ();
161 public void Refresh ()
168 protected FileSystemInfo ()
171 this.FullPath = null;
174 protected FileSystemInfo (SerializationInfo info, StreamingContext context)
178 throw new ArgumentNullException("info");
181 FullPath = info.GetString("FullPath");
182 OriginalPath = info.GetString("OriginalPath");
185 protected string FullPath;
186 protected string OriginalPath;
190 internal void Refresh (bool force)
197 MonoIO.GetFileStat (FullName, out stat, out error);
203 internal virtual void InternalRefresh ()
207 internal void CheckPath (string path)
210 throw new ArgumentNullException ();
211 if (path.IndexOfAny (Path.InvalidPathChars) != -1)
212 throw new ArgumentException ("Invalid characters in path.");
215 internal MonoIOStat stat;