2 // System.IO.DirectoryInfo.cs
\r
5 // Miguel de Icaza, miguel@ximian.com
\r
6 // Jim Richardson, develop@wtfo-guru.com
\r
7 // Dan Lewis, dihlewis@yahoo.co.uk
\r
9 // Copyright (C) 2002 Ximian, Inc.
\r
10 // Copyright (C) 2001 Moonlight Enterprises, All Rights Reserved
\r
14 using System.Collections;
\r
16 namespace System.IO {
\r
19 public sealed class DirectoryInfo : FileSystemInfo {
\r
21 public DirectoryInfo (string path) {
\r
24 OriginalPath = path;
\r
25 FullPath = Path.GetFullPath (path);
\r
30 public override bool Exists {
\r
34 if (stat.Attributes == MonoIO.InvalidFileAttributes)
\r
37 if ((stat.Attributes & FileAttributes.Directory) == 0)
\r
44 public override string Name {
\r
46 return Path.GetFileName (FullPath);
\r
50 public DirectoryInfo Parent {
\r
52 return new DirectoryInfo (Path.GetDirectoryName (FullPath));
\r
56 public DirectoryInfo Root {
\r
58 return new DirectoryInfo (Path.GetPathRoot (FullPath));
\r
62 // creational methods
\r
64 public void Create () {
\r
65 Directory.CreateDirectory (FullPath);
\r
68 public DirectoryInfo CreateSubdirectory (string name) {
\r
69 string path = Path.Combine (FullPath, Path.GetFileName (name));
\r
70 Directory.CreateDirectory (path);
\r
72 return new DirectoryInfo (path);
\r
75 // directory listing methods
\r
77 public FileInfo [] GetFiles () {
\r
78 return GetFiles ("*");
\r
81 public FileInfo [] GetFiles (string pattern) {
\r
82 string [] names = Directory.GetFiles (FullPath, pattern);
\r
84 ArrayList infos = new ArrayList ();
\r
85 foreach (string name in names)
\r
86 infos.Add (new FileInfo (name));
\r
88 return (FileInfo []) infos.ToArray (typeof (FileInfo));
\r
91 public DirectoryInfo [] GetDirectories () {
\r
92 return GetDirectories ("*");
\r
95 public DirectoryInfo [] GetDirectories (string pattern) {
\r
96 string [] names = Directory.GetDirectories (FullPath, pattern);
\r
98 ArrayList infos = new ArrayList ();
\r
99 foreach (string name in names)
\r
100 infos.Add (new DirectoryInfo (name));
\r
102 return (DirectoryInfo []) infos.ToArray (typeof (DirectoryInfo));
\r
105 public FileSystemInfo [] GetFileSystemInfos () {
\r
106 return GetFileSystemInfos ("*");
\r
109 public FileSystemInfo [] GetFileSystemInfos (string pattern) {
\r
110 ArrayList infos = new ArrayList ();
\r
111 infos.AddRange (GetDirectories (pattern));
\r
112 infos.AddRange (GetFiles (pattern));
\r
114 return (FileSystemInfo []) infos.ToArray (typeof (FileSystemInfo));
\r
117 // directory management methods
\r
119 public override void Delete () {
\r
123 public void Delete (bool recurse) {
\r
124 Directory.Delete (FullPath, recurse);
\r
127 public void MoveTo (string dest) {
\r
128 Directory.Move (FullPath, dest);
\r
131 public override string ToString () {
\r
132 return OriginalPath;
\r