[327] | 1 | Imports System.Collections.Generic
|
---|
| 2 |
|
---|
| 3 | Namespace System
|
---|
| 4 | Namespace IO
|
---|
| 5 |
|
---|
[407] | 6 | /*!
|
---|
| 7 | @brief ディレクトリの情報を取得したり操作するクラス
|
---|
| 8 | */
|
---|
| 9 |
|
---|
[327] | 10 | Class Directory
|
---|
[407] | 11 | Public
|
---|
| 12 |
|
---|
| 13 | '----------------------------------------------------------------
|
---|
| 14 | ' パブリック メソッド
|
---|
| 15 | '----------------------------------------------------------------
|
---|
| 16 |
|
---|
| 17 | /*!
|
---|
| 18 | @brief ディレクトリを作成する
|
---|
| 19 | @param 作成するディレクトリのファイルパス
|
---|
| 20 | @return 作成されたディレクトリのDirctoryInfo
|
---|
| 21 | */
|
---|
[327] | 22 | Static Function CreateDirectory(path As String) As DirectoryInfo
|
---|
[407] | 23 | Dim info = New DirectoryInfo(path)
|
---|
| 24 | info.Create()
|
---|
| 25 | Return info
|
---|
[327] | 26 | End Function
|
---|
| 27 |
|
---|
[407] | 28 | /*
|
---|
[327] | 29 | Static Function CreateDirectory(path As String, directorySecurity As DirectorySecurity) As DirectoryInfo
|
---|
[407] | 30 | End Function */
|
---|
[327] | 31 |
|
---|
[407] | 32 | /*!
|
---|
| 33 | @brief ディレクトリを削除する
|
---|
| 34 | ディレクトリが開き出ない場合は削除されない
|
---|
| 35 | @param 消去するディレクトリのファイルパス
|
---|
| 36 | */
|
---|
[327] | 37 | Static Sub Delete(path As String)
|
---|
[407] | 38 | Dim info = New DirectoryInfo(path)
|
---|
| 39 | info.Delete()
|
---|
[327] | 40 | End Sub
|
---|
| 41 |
|
---|
[407] | 42 | /*!
|
---|
| 43 | @brief ディレクトリを削除する
|
---|
| 44 | @param 削除するディレクトリのファイルパス
|
---|
| 45 | @param ディレクトリの中身も消去する場合True
|
---|
| 46 | */
|
---|
[327] | 47 | Static Sub Delete(path As String, recursive As Boolean)
|
---|
[407] | 48 | Dim info = New DirectoryInfo(path)
|
---|
| 49 | info.Delete(recursive)
|
---|
[327] | 50 | End Sub
|
---|
| 51 |
|
---|
[407] | 52 | /*!
|
---|
| 53 | @brief ディレクトリが存在するかどうか
|
---|
| 54 | @param 調べるディレクトリのファイルパス
|
---|
| 55 | @retval True 存在する
|
---|
| 56 | @retval False 存在しない
|
---|
| 57 | */
|
---|
[431] | 58 | Static Function Exists(path As String) As Boolean
|
---|
[407] | 59 | Dim info = New DirectoryInfo(path)
|
---|
| 60 | Return info.Exists
|
---|
[327] | 61 | End Function
|
---|
| 62 |
|
---|
[407] | 63 | /*!
|
---|
| 64 | @brief カレントディレクトリを取得する
|
---|
| 65 | @return カレントディレクトリを示すパス
|
---|
| 66 | */
|
---|
[327] | 67 | Static Function GetCurrentDirectory() As String
|
---|
[407] | 68 | Return System.Environment.CurrentDirectory
|
---|
[327] | 69 | End Function
|
---|
| 70 |
|
---|
[407] | 71 | /*
|
---|
[327] | 72 | Static Function GetAccessControl(path As String) As DirectorySecurity
|
---|
[407] | 73 | End Function
|
---|
[327] | 74 |
|
---|
[337] | 75 | Static Function GetAccessControl(path As String, includeSections As System.Security.AccessControl.AccessControlSections) As DirectorySecurity
|
---|
[327] | 76 | End Function
|
---|
[407] | 77 | */
|
---|
[327] | 78 |
|
---|
[407] | 79 | /*!
|
---|
| 80 | @brief ディレクトリの作成日を取得する
|
---|
| 81 | @param ディレクトリを示すパス
|
---|
| 82 | @return 作成日
|
---|
| 83 | */
|
---|
| 84 | Static Function GetCreationTime(path As String) As DateTime
|
---|
| 85 | Dim info = New DirectoryInfo(path)
|
---|
| 86 | Return info.CreationTime
|
---|
[327] | 87 | End Function
|
---|
| 88 |
|
---|
[407] | 89 | /*!
|
---|
| 90 | @brief ディレクトリの作成日をUTC時刻で取得する
|
---|
| 91 | @param ディレクトリを示すパス
|
---|
| 92 | @return 作成日(UTC)
|
---|
| 93 | */
|
---|
[327] | 94 | Static Function GetCreationTimeUtc(path As String) As DateTime
|
---|
[407] | 95 | Dim info = New DirectoryInfo(path)
|
---|
| 96 | Return info.CreationTimeUtc
|
---|
[327] | 97 | End Function
|
---|
| 98 |
|
---|
[407] | 99 | /*!
|
---|
| 100 | @brief ディレクトリ内のディレクトリを列挙する
|
---|
| 101 | @param 中身を調べるディレクトリのパス
|
---|
| 102 | @return ディレクトリのパス文字列が列挙された配列
|
---|
| 103 | */
|
---|
[327] | 104 | Static Function GetDirectories(path As String) As List<String>
|
---|
[407] | 105 | Return GetDirectories(path, "?*", SearchOption.TopDirectoryOnly)
|
---|
[327] | 106 | End Function
|
---|
| 107 |
|
---|
[407] | 108 | /*!
|
---|
| 109 | @brief ディレクトリ内のディレクトリを列挙する
|
---|
| 110 | @param 中身を調べるディレクトリのパス
|
---|
| 111 | @param サーチするディレクトリ名のパターン
|
---|
| 112 | @return ディレクトリのパス文字列が列挙された配列
|
---|
| 113 | */
|
---|
[327] | 114 | Static Function GetDirectories(path As String, searchPattern As String) As List<String>
|
---|
[407] | 115 | Return GetDirectories(path, searchPattern, SearchOption.TopDirectoryOnly)
|
---|
[327] | 116 | End Function
|
---|
| 117 |
|
---|
[407] | 118 | /*!
|
---|
| 119 | @brief ディレクトリ内のディレクトリを列挙する
|
---|
| 120 | @param 中身を調べるディレクトリのパス
|
---|
| 121 | @param サーチするディレクトリ名のパターン
|
---|
| 122 | @param サーチする範囲
|
---|
| 123 | @return ディレクトリのパス文字列が列挙された配列
|
---|
| 124 | */
|
---|
[327] | 125 | Static Function GetDirectories(path As String, searchPattern As String, searchOption As SearchOption) As List<String>
|
---|
[407] | 126 | Dim info = New DirectoryInfo(path)
|
---|
| 127 | Dim infos = info.GetDirectories(searchPattern, searchOption) As List<DirectoryInfo>
|
---|
| 128 | Dim enumerator = infos.GetEnumerator()
|
---|
| 129 | Dim list As List<String>
|
---|
| 130 | While enumerator.MoveNext()
|
---|
| 131 | list.Add(enumerator.Current.ToString)
|
---|
| 132 | Wend
|
---|
| 133 | Return list
|
---|
[327] | 134 | End Function
|
---|
| 135 |
|
---|
[407] | 136 | /*!
|
---|
| 137 | @brief ディレクトリのルートディレクトリを取得する
|
---|
| 138 | @param ディレクトリのパス
|
---|
| 139 | @return ルートディレクトリ
|
---|
| 140 | */
|
---|
[327] | 141 | Static Function GetDirectoryRoot(path As String) As String
|
---|
[407] | 142 | Return Path.GetPathRoot(path)
|
---|
[327] | 143 | End Function
|
---|
| 144 |
|
---|
[407] | 145 | /*!
|
---|
| 146 | @brief ディレクトリ内のファイルを列挙する
|
---|
| 147 | @param 中身を調べるディレクトリのパス
|
---|
| 148 | @return ファイルのパス文字列が列挙された配列
|
---|
| 149 | */
|
---|
[327] | 150 | Static Function GetFiles(path As String) As List<String>
|
---|
[407] | 151 | Return GetFiles(path, "?*", SearchOption.TopDirectoryOnly)
|
---|
[327] | 152 | End Function
|
---|
| 153 |
|
---|
[407] | 154 | /*!
|
---|
| 155 | @brief ディレクトリ内のファイルを列挙する
|
---|
| 156 | @param 中身を調べるディレクトリのパス
|
---|
| 157 | @param サーチするファイル名のパターン
|
---|
| 158 | @return ファイルのパス文字列が列挙された配列
|
---|
| 159 | */
|
---|
[327] | 160 | Static Function GetFiles(path As String, searchPattern As String) As List<String>
|
---|
[407] | 161 | Return GetFiles(path, searchPattern, SearchOption.TopDirectoryOnly)
|
---|
[327] | 162 | End Function
|
---|
| 163 |
|
---|
[407] | 164 | /*!
|
---|
| 165 | @brief ディレクトリ内のファイルを列挙する
|
---|
| 166 | @param 中身を調べるディレクトリのパス
|
---|
| 167 | @param サーチするファイル名のパターン
|
---|
| 168 | @param サーチする範囲
|
---|
| 169 | @return ファイルのパス文字列が列挙された配列
|
---|
| 170 | */
|
---|
[327] | 171 | Static Function GetFiles(path As String, searchPattern As String, searchOption As SearchOption) As List<String>
|
---|
[407] | 172 | Dim info = New DirectoryInfo(path)
|
---|
| 173 | Dim infos = info.GetFiles(searchPattern, searchOption) As List<FileInfo>
|
---|
| 174 | Dim enumerator = infos.GetEnumerator()
|
---|
| 175 | Dim list As List<String>
|
---|
| 176 | While enumerator.MoveNext()
|
---|
| 177 | list.Add(enumerator.Current.ToString)
|
---|
| 178 | Wend
|
---|
| 179 | Return list
|
---|
[327] | 180 | End Function
|
---|
| 181 |
|
---|
[407] | 182 | /*!
|
---|
| 183 | @brief ディレクトリ内を列挙する
|
---|
| 184 | @param 中身を調べるディレクトリのパス
|
---|
| 185 | @return ファイルやディレクトリのパス文字列が列挙された配列
|
---|
| 186 | */
|
---|
[531] | 187 | Static Function GetFileSystemEntries(path As String) As List<String>
|
---|
| 188 | Return GetFileSystemEntries(path, "?*")
|
---|
[327] | 189 | End Function
|
---|
| 190 |
|
---|
[407] | 191 | /*!
|
---|
| 192 | @brief ディレクトリ内を列挙する
|
---|
| 193 | @param 中身を調べるディレクトリのパス
|
---|
| 194 | @param サーチするファイル名のパターン
|
---|
| 195 | @return ファイルやディレクトリのパス文字列が列挙された配列
|
---|
| 196 | */
|
---|
[531] | 197 | Static Function GetFileSystemEntries(path As String, searchPattern As String) As List<String>
|
---|
[407] | 198 | Dim info = New DirectoryInfo(path)
|
---|
| 199 | Dim infos = info.GetFileSystemInfos(searchPattern) As List<FileSystemInfo>
|
---|
| 200 | Dim enumerator = infos.GetEnumerator()
|
---|
| 201 | Dim list As List<String>
|
---|
| 202 | While enumerator.MoveNext()
|
---|
| 203 | list.Add(enumerator.Current.ToString)
|
---|
| 204 | Wend
|
---|
| 205 | Return list
|
---|
[327] | 206 | End Function
|
---|
| 207 |
|
---|
[407] | 208 | /*!
|
---|
| 209 | @brief ディレクトリの最終アクセス日を取得する
|
---|
| 210 | @param ディレクトリのパス
|
---|
| 211 | @return 最終アクセス日
|
---|
| 212 | */
|
---|
[327] | 213 | Static Function GetLastAccessTime(path As String) As DateTime
|
---|
[407] | 214 | Dim info = New DirectoryInfo(path)
|
---|
| 215 | Return info.LastAccessTime
|
---|
[327] | 216 | End Function
|
---|
| 217 |
|
---|
[407] | 218 | /*!
|
---|
| 219 | @brief ディレクトリの最終アクセス日をUTC時刻で取得する
|
---|
| 220 | @param ディレクトリのパス
|
---|
| 221 | @return 最終アクセス日(UTC)
|
---|
| 222 | */
|
---|
[327] | 223 | Static Function GetLastAccessTimeUtc(path As String) As DateTime
|
---|
[407] | 224 | Dim info = New DirectoryInfo(path)
|
---|
| 225 | Return info.LastAccessTimeUtc
|
---|
[327] | 226 | End Function
|
---|
| 227 |
|
---|
[407] | 228 | /*!
|
---|
| 229 | @brief ディレクトリの最終書き込み日を取得する
|
---|
| 230 | @param ディレクトリのパス
|
---|
| 231 | @return 最終書き込み日
|
---|
| 232 | */
|
---|
[327] | 233 | Static Function GetLastWriteTime(path As String) As DateTime
|
---|
[407] | 234 | Dim info = New DirectoryInfo(path)
|
---|
| 235 | Return info.LastWriteTime
|
---|
[327] | 236 | End Function
|
---|
| 237 |
|
---|
[407] | 238 | /*!
|
---|
| 239 | @brief ディレクトリの最終書き込み日をUTC時刻で取得する
|
---|
| 240 | @param ディレクトリのパス
|
---|
| 241 | @return 最終書き込み日(UTC)
|
---|
| 242 | */
|
---|
[327] | 243 | Static Function GetLastWriteTimeUtc(path As String) As DateTime
|
---|
[407] | 244 | Dim info = New DirectoryInfo(path)
|
---|
| 245 | Return info.LastWriteTimeUtc
|
---|
[327] | 246 | End Function
|
---|
| 247 |
|
---|
[407] | 248 | /*!
|
---|
| 249 | @brief 使用可能な論理ドライブを列挙する
|
---|
| 250 | @return 論理ドライブを列挙したパス文字列
|
---|
| 251 | */
|
---|
[327] | 252 | Static Function GetLogicalDrives() As List<String>
|
---|
[407] | 253 | Dim drives = WIN32API_GetLogicalDrives() As DWord
|
---|
| 254 | If drives <> 0 Then
|
---|
| 255 | Dim list As List<String>
|
---|
| 256 | Dim i As SByte
|
---|
| 257 | For i = 0 To 25
|
---|
| 258 | If (drives and (1 << i)) <> 0 Then
|
---|
| 259 | list.Add(Chr$(Asc("A") + i) + ":\")
|
---|
| 260 | End If
|
---|
| 261 | Next
|
---|
| 262 | Return list
|
---|
| 263 | Else
|
---|
| 264 | Throw New IOException("Directory.GetLogicalDrives: Failed to GetLogicalDirives.")
|
---|
| 265 | End If
|
---|
[327] | 266 | End Function
|
---|
| 267 |
|
---|
[407] | 268 | /*!
|
---|
| 269 | @brief ディレクトリのひとつ上のディレクトリを取得する
|
---|
| 270 | @param ディレクトリのパス
|
---|
| 271 | @return ひとつ上のディレクトリ
|
---|
| 272 | */
|
---|
[327] | 273 | Static Function GetParent(path As String) As DirectoryInfo
|
---|
[407] | 274 | Return New DirectoryInfo(Path.GetDirectoryName(path))
|
---|
[327] | 275 | End Function
|
---|
| 276 |
|
---|
[407] | 277 | /*!
|
---|
| 278 | @brief ディレクトリを移動する
|
---|
| 279 | @param 移動元のディレクトリのパス
|
---|
| 280 | @param 移動後のディレクトリのパス
|
---|
| 281 | */
|
---|
[327] | 282 | Static Sub Move(sourceDirName As String, destDirName As String)
|
---|
[407] | 283 | Dim info = New DirectoryInfo(sourceDirName)
|
---|
| 284 | info.MoveTo(destDirName)
|
---|
[327] | 285 | End Sub
|
---|
| 286 |
|
---|
[407] | 287 | /*
|
---|
[327] | 288 | Static Sub SetAccessControl(path As String, directorySecurity As DirectorySecurity)
|
---|
| 289 | End Sub
|
---|
[407] | 290 | */
|
---|
[327] | 291 |
|
---|
[407] | 292 | /*!
|
---|
| 293 | @brief ディレクトリの作成日を設定する
|
---|
| 294 | @param ディレクトリのパス
|
---|
| 295 | @param 作成日
|
---|
| 296 | */
|
---|
[327] | 297 | Static Sub SetCreationTime(path As String, creationTime As DateTime)
|
---|
[407] | 298 | Dim info = New DirectoryInfo(path)
|
---|
| 299 | info.CreationTime = creationTime
|
---|
[327] | 300 | End Sub
|
---|
| 301 |
|
---|
[407] | 302 | /*!
|
---|
| 303 | @brief ディレクトリの作成日をUTC時刻で設定する
|
---|
| 304 | @param ディレクトリのパス
|
---|
| 305 | @param 作成日(UTC)
|
---|
| 306 | */
|
---|
[327] | 307 | Static Sub SetCreationTimeUtc(path As String, creationTime As DateTime)
|
---|
[407] | 308 | Dim info = New DirectoryInfo(path)
|
---|
| 309 | info.CreationTimeUtc = creationTime
|
---|
[327] | 310 | End Sub
|
---|
| 311 |
|
---|
[407] | 312 | /*!
|
---|
| 313 | @brief カレントディレクトリを設定する
|
---|
| 314 | @param ディレクトリのパス
|
---|
| 315 | */
|
---|
[327] | 316 | Static Sub SetCurrentDirectory(path As String)
|
---|
[407] | 317 | System.Environment.CurrentDirectory = path
|
---|
[327] | 318 | End Sub
|
---|
| 319 |
|
---|
[407] | 320 | /*!
|
---|
| 321 | @brief ディレクトリの最終アクセス日を設定する
|
---|
| 322 | @param ディレクトリのパス
|
---|
| 323 | @param 最終アクセス日
|
---|
| 324 | */
|
---|
[327] | 325 | Static Sub SetLastAccessTime(path As String, lastAccessTime As DateTime)
|
---|
[407] | 326 | Dim info = New DirectoryInfo(path)
|
---|
| 327 | info.LastAccessTime = lastAccessTime
|
---|
[327] | 328 | End Sub
|
---|
| 329 |
|
---|
[407] | 330 | /*!
|
---|
| 331 | @brief ディレクトリの最終アクセス日をUTC時刻で設定する
|
---|
| 332 | @param ディレクトリのパス
|
---|
| 333 | @param 最終アクセス日(UTC)
|
---|
| 334 | */
|
---|
[327] | 335 | Static Sub SetLastAccessTimeUtc(path As String, lastAccessTime As DateTime)
|
---|
[407] | 336 | Dim info = New DirectoryInfo(path)
|
---|
| 337 | info.LastAccessTimeUtc = lastAccessTime
|
---|
[327] | 338 | End Sub
|
---|
| 339 |
|
---|
[407] | 340 | /*!
|
---|
| 341 | @brief ディレクトリの最終書き込み日を設定する
|
---|
| 342 | @param ディレクトリのパス
|
---|
| 343 | @param 最終書き込み日
|
---|
| 344 | */
|
---|
[327] | 345 | Static Sub SetLastWriteTime(path As String, lastWriteTime As DateTime)
|
---|
[407] | 346 | Dim info = New DirectoryInfo(path)
|
---|
| 347 | info.LastWriteTime = lastWriteTime
|
---|
[327] | 348 | End Sub
|
---|
| 349 |
|
---|
[407] | 350 | /*!
|
---|
| 351 | @brief ディレクトリの最終書き込み日をUTC時刻で設定する
|
---|
| 352 | @param ディレクトリのパス
|
---|
| 353 | @param 最終書き込み日(UTC)
|
---|
| 354 | */
|
---|
[327] | 355 | Static Sub SetLastWriteTimeUtc(path As String, lastWriteTime As DateTime)
|
---|
[407] | 356 | Dim info = New DirectoryInfo(path)
|
---|
| 357 | info.LastWriteTimeUtc = lastWriteTime
|
---|
[327] | 358 | End Sub
|
---|
| 359 | End Class
|
---|
| 360 |
|
---|
[407] | 361 | /* 名前が被ってメソッドから呼び出せない */
|
---|
| 362 | Function WIN32API_GetLogicalDrives() As DWord
|
---|
| 363 | Return GetLogicalDrives()
|
---|
| 364 | End Function
|
---|
| 365 |
|
---|
[327] | 366 | End Namespace
|
---|
| 367 | End Namespace
|
---|