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 string result = Path.GetFileName (FullPath);
\r
47 if (result == null || result == "")
53 public DirectoryInfo Parent {
\r
55 string dirname = Path.GetDirectoryName (FullPath);
59 return new DirectoryInfo (dirname);
63 public DirectoryInfo Root {
\r
65 string root = Path.GetPathRoot (FullPath);
69 return new DirectoryInfo (root);
73 // creational methods
\r
75 public void Create () {
\r
76 Directory.CreateDirectory (FullPath);
\r
79 public DirectoryInfo CreateSubdirectory (string name) {
\r
80 string path = Path.Combine (FullPath, Path.GetFileName (name));
\r
81 Directory.CreateDirectory (path);
\r
83 return new DirectoryInfo (path);
\r
86 // directory listing methods
\r
88 public FileInfo [] GetFiles () {
\r
89 return GetFiles ("*");
\r
92 public FileInfo [] GetFiles (string pattern) {
\r
93 string [] names = Directory.GetFiles (FullPath, pattern);
\r
95 ArrayList infos = new ArrayList ();
\r
96 foreach (string name in names)
\r
97 infos.Add (new FileInfo (name));
\r
99 return (FileInfo []) infos.ToArray (typeof (FileInfo));
\r
102 public DirectoryInfo [] GetDirectories () {
\r
103 return GetDirectories ("*");
\r
106 public DirectoryInfo [] GetDirectories (string pattern) {
\r
107 string [] names = Directory.GetDirectories (FullPath, pattern);
\r
109 ArrayList infos = new ArrayList ();
\r
110 foreach (string name in names)
\r
111 infos.Add (new DirectoryInfo (name));
\r
113 return (DirectoryInfo []) infos.ToArray (typeof (DirectoryInfo));
\r
116 public FileSystemInfo [] GetFileSystemInfos () {
\r
117 return GetFileSystemInfos ("*");
\r
120 public FileSystemInfo [] GetFileSystemInfos (string pattern) {
\r
121 ArrayList infos = new ArrayList ();
\r
122 infos.AddRange (GetDirectories (pattern));
\r
123 infos.AddRange (GetFiles (pattern));
\r
125 return (FileSystemInfo []) infos.ToArray (typeof (FileSystemInfo));
\r
128 // directory management methods
\r
130 public override void Delete () {
\r
134 public void Delete (bool recurse) {
\r
135 Directory.Delete (FullPath, recurse);
\r
138 public void MoveTo (string dest) {
\r
139 Directory.Move (FullPath, Path.GetFullPath (dest));
142 public override string ToString () {
\r