Fri Jun 14 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
[mono.git] / mcs / class / corlib / System.IO / DirectoryInfo.cs
1 // \r
2 // System.IO.DirectoryInfo.cs \r
3 //\r
4 // Author:\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
8 //\r
9 // Copyright (C) 2002 Ximian, Inc.\r
10 // Copyright (C) 2001 Moonlight Enterprises, All Rights Reserved\r
11 // \r
12 \r
13 using System;\r
14 using System.Collections;\r
15 \r
16 namespace System.IO {\r
17         \r
18         [Serializable]
19         public sealed class DirectoryInfo : FileSystemInfo {\r
20         \r
21                 public DirectoryInfo (string path) {\r
22                         CheckPath (path);\r
23                 \r
24                         OriginalPath = path;\r
25                         FullPath = Path.GetFullPath (path);\r
26                 }\r
27 \r
28                 // properties\r
29 \r
30                 public override bool Exists {\r
31                         get {\r
32                                 Refresh (false);\r
33 \r
34                                 if (stat.Attributes == MonoIO.InvalidFileAttributes)\r
35                                         return false;\r
36 \r
37                                 if ((stat.Attributes & FileAttributes.Directory) == 0)\r
38                                         return false;\r
39 \r
40                                 return true;\r
41                         }\r
42                 }\r
43 \r
44                 public override string Name {\r
45                         get {\r
46                                 return Path.GetFileName (FullPath);\r
47                         }\r
48                 }\r
49 \r
50                 public DirectoryInfo Parent {\r
51                         get {\r
52                                 return new DirectoryInfo (Path.GetDirectoryName (FullPath));\r
53                         }\r
54                 }\r
55 \r
56                 public DirectoryInfo Root {\r
57                         get {\r
58                                 return new DirectoryInfo (Path.GetPathRoot (FullPath));\r
59                         }\r
60                 }\r
61 \r
62                 // creational methods\r
63 \r
64                 public void Create () {\r
65                         Directory.CreateDirectory (FullPath);\r
66                 }\r
67 \r
68                 public DirectoryInfo CreateSubdirectory (string name) {\r
69                         string path = Path.Combine (FullPath, Path.GetFileName (name));\r
70                         Directory.CreateDirectory (path);\r
71 \r
72                         return new DirectoryInfo (path);\r
73                 }\r
74 \r
75                 // directory listing methods\r
76 \r
77                 public FileInfo [] GetFiles () {\r
78                         return GetFiles ("*");\r
79                 }\r
80 \r
81                 public FileInfo [] GetFiles (string pattern) {\r
82                         string [] names = Directory.GetFiles (FullPath, pattern);\r
83 \r
84                         ArrayList infos = new ArrayList ();\r
85                         foreach (string name in names)\r
86                                 infos.Add (new FileInfo (name));\r
87 \r
88                         return (FileInfo []) infos.ToArray (typeof (FileInfo));\r
89                 }\r
90 \r
91                 public DirectoryInfo [] GetDirectories () {\r
92                         return GetDirectories ("*");\r
93                 }\r
94 \r
95                 public DirectoryInfo [] GetDirectories (string pattern) {\r
96                         string [] names = Directory.GetDirectories (FullPath, pattern);\r
97 \r
98                         ArrayList infos = new ArrayList ();\r
99                         foreach (string name in names)\r
100                                 infos.Add (new DirectoryInfo (name));\r
101 \r
102                         return (DirectoryInfo []) infos.ToArray (typeof (DirectoryInfo));\r
103                 }\r
104 \r
105                 public FileSystemInfo [] GetFileSystemInfos () {\r
106                         return GetFileSystemInfos ("*");\r
107                 }\r
108 \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
113 \r
114                         return (FileSystemInfo []) infos.ToArray (typeof (FileSystemInfo));\r
115                 }\r
116 \r
117                 // directory management methods\r
118 \r
119                 public override void Delete () {\r
120                         Delete (false);\r
121                 }\r
122 \r
123                 public void Delete (bool recurse) {\r
124                         Directory.Delete (FullPath, recurse);\r
125                 }\r
126 \r
127                 public void MoveTo (string dest) {\r
128                         Directory.Move (FullPath, dest);\r
129                 }\r
130 \r
131                 public override string ToString () {\r
132                         return OriginalPath;\r
133                 }\r
134         }\r
135 }\r