DirectoryInfo.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. string result = Path.GetFileName (FullPath);
  36. if (result == "")
  37. return FullPath;
  38. return result;
  39. }
  40. }
  41. public DirectoryInfo Parent {
  42. get {
  43. return new DirectoryInfo (Path.GetDirectoryName (FullPath));
  44. }
  45. }
  46. public DirectoryInfo Root {
  47. get {
  48. return new DirectoryInfo (Path.GetPathRoot (FullPath));
  49. }
  50. }
  51. // creational methods
  52. public void Create () {
  53. Directory.CreateDirectory (FullPath);
  54. }
  55. public DirectoryInfo CreateSubdirectory (string name) {
  56. string path = Path.Combine (FullPath, Path.GetFileName (name));
  57. Directory.CreateDirectory (path);
  58. return new DirectoryInfo (path);
  59. }
  60. // directory listing methods
  61. public FileInfo [] GetFiles () {
  62. return GetFiles ("*");
  63. }
  64. public FileInfo [] GetFiles (string pattern) {
  65. string [] names = Directory.GetFiles (FullPath, pattern);
  66. ArrayList infos = new ArrayList ();
  67. foreach (string name in names)
  68. infos.Add (new FileInfo (name));
  69. return (FileInfo []) infos.ToArray (typeof (FileInfo));
  70. }
  71. public DirectoryInfo [] GetDirectories () {
  72. return GetDirectories ("*");
  73. }
  74. public DirectoryInfo [] GetDirectories (string pattern) {
  75. string [] names = Directory.GetDirectories (FullPath, pattern);
  76. ArrayList infos = new ArrayList ();
  77. foreach (string name in names)
  78. infos.Add (new DirectoryInfo (name));
  79. return (DirectoryInfo []) infos.ToArray (typeof (DirectoryInfo));
  80. }
  81. public FileSystemInfo [] GetFileSystemInfos () {
  82. return GetFileSystemInfos ("*");
  83. }
  84. public FileSystemInfo [] GetFileSystemInfos (string pattern) {
  85. ArrayList infos = new ArrayList ();
  86. infos.AddRange (GetDirectories (pattern));
  87. infos.AddRange (GetFiles (pattern));
  88. return (FileSystemInfo []) infos.ToArray (typeof (FileSystemInfo));
  89. }
  90. // directory management methods
  91. public override void Delete () {
  92. Delete (false);
  93. }
  94. public void Delete (bool recurse) {
  95. Directory.Delete (FullPath, recurse);
  96. }
  97. public void MoveTo (string dest) {
  98. Directory.Move (FullPath, dest);
  99. }
  100. public override string ToString () {
  101. return Path.GetFileName (OriginalPath);
  102. }
  103. }
  104. }