DirectoryInfo.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. //
  2. // System.IO.DirectoryInfo.cs
  3. //
  4. // Author:
  5. // Miguel de Icaza, [email protected]
  6. // Jim Richardson, [email protected]
  7. // Dan Lewis, [email protected]
  8. //
  9. // Copyright (C) 2002 Ximian, Inc.
  10. // Copyright (C) 2001 Moonlight Enterprises, All Rights Reserved
  11. //
  12. using System;
  13. using System.Collections;
  14. namespace System.IO {
  15. [Serializable]
  16. public sealed class DirectoryInfo : FileSystemInfo {
  17. public DirectoryInfo (string path) {
  18. CheckPath (path);
  19. OriginalPath = path;
  20. FullPath = Path.GetFullPath (path);
  21. }
  22. // properties
  23. public override bool Exists {
  24. get {
  25. Refresh (false);
  26. if (stat.Attributes == MonoIO.InvalidFileAttributes)
  27. return false;
  28. if ((stat.Attributes & FileAttributes.Directory) == 0)
  29. return false;
  30. return true;
  31. }
  32. }
  33. public override string Name {
  34. get {
  35. return Path.GetFileName (FullPath);
  36. }
  37. }
  38. public DirectoryInfo Parent {
  39. get {
  40. return new DirectoryInfo (Path.GetDirectoryName (FullPath));
  41. }
  42. }
  43. public DirectoryInfo Root {
  44. get {
  45. return new DirectoryInfo (Path.GetPathRoot (FullPath));
  46. }
  47. }
  48. // creational methods
  49. public void Create () {
  50. Directory.CreateDirectory (FullPath);
  51. }
  52. public DirectoryInfo CreateSubdirectory (string name) {
  53. string path = Path.Combine (FullPath, Path.GetFileName (name));
  54. Directory.CreateDirectory (path);
  55. return new DirectoryInfo (path);
  56. }
  57. // directory listing methods
  58. public FileInfo [] GetFiles () {
  59. return GetFiles ("*");
  60. }
  61. public FileInfo [] GetFiles (string pattern) {
  62. string [] names = Directory.GetFiles (FullPath, pattern);
  63. ArrayList infos = new ArrayList ();
  64. foreach (string name in names)
  65. infos.Add (new FileInfo (name));
  66. return (FileInfo []) infos.ToArray (typeof (FileInfo));
  67. }
  68. public DirectoryInfo [] GetDirectories () {
  69. return GetDirectories ("*");
  70. }
  71. public DirectoryInfo [] GetDirectories (string pattern) {
  72. string [] names = Directory.GetDirectories (FullPath, pattern);
  73. ArrayList infos = new ArrayList ();
  74. foreach (string name in names)
  75. infos.Add (new DirectoryInfo (name));
  76. return (DirectoryInfo []) infos.ToArray (typeof (DirectoryInfo));
  77. }
  78. public FileSystemInfo [] GetFileSystemInfos () {
  79. return GetFileSystemInfos ("*");
  80. }
  81. public FileSystemInfo [] GetFileSystemInfos (string pattern) {
  82. ArrayList infos = new ArrayList ();
  83. infos.AddRange (GetDirectories (pattern));
  84. infos.AddRange (GetFiles (pattern));
  85. return (FileSystemInfo []) infos.ToArray (typeof (FileSystemInfo));
  86. }
  87. // directory management methods
  88. public override void Delete () {
  89. Delete (false);
  90. }
  91. public void Delete (bool recurse) {
  92. Directory.Delete (FullPath, recurse);
  93. }
  94. public void MoveTo (string dest) {
  95. Directory.Move (FullPath, dest);
  96. }
  97. public override string ToString () {
  98. return OriginalPath;
  99. }
  100. }
  101. }