Changeset 407
- Timestamp:
- Feb 17, 2008, 12:51:20 PM (17 years ago)
- Location:
- trunk/Include/Classes/System/IO
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Include/Classes/System/IO/Directory.ab
r337 r407 4 4 Namespace IO 5 5 6 /*! 7 @brief ディレクトリの情報を取得したり操作するクラス 8 */ 9 6 10 Class Directory 11 Public 12 13 '---------------------------------------------------------------- 14 ' パブリック メソッド 15 '---------------------------------------------------------------- 16 17 /*! 18 @brief ディレクトリを作成する 19 @param 作成するディレクトリのファイルパス 20 @return 作成されたディレクトリのDirctoryInfo 21 */ 7 22 Static Function CreateDirectory(path As String) As DirectoryInfo 8 End Function 9 23 Dim info = New DirectoryInfo(path) 24 info.Create() 25 Return info 26 End Function 27 28 /* 10 29 Static Function CreateDirectory(path As String, directorySecurity As DirectorySecurity) As DirectoryInfo 11 End Function 12 30 End Function */ 31 32 /*! 33 @brief ディレクトリを削除する 34 ディレクトリが開き出ない場合は削除されない 35 @param 消去するディレクトリのファイルパス 36 */ 13 37 Static Sub Delete(path As String) 14 End Sub 15 38 Dim info = New DirectoryInfo(path) 39 info.Delete() 40 End Sub 41 42 /*! 43 @brief ディレクトリを削除する 44 @param 削除するディレクトリのファイルパス 45 @param ディレクトリの中身も消去する場合True 46 */ 16 47 Static Sub Delete(path As String, recursive As Boolean) 17 End Sub 18 48 Dim info = New DirectoryInfo(path) 49 info.Delete(recursive) 50 End Sub 51 52 /*! 53 @brief ディレクトリが存在するかどうか 54 @param 調べるディレクトリのファイルパス 55 @retval True 存在する 56 @retval False 存在しない 57 */ 19 58 Static Function Exist(path As String) As Boolean 20 End Function 21 59 Dim info = New DirectoryInfo(path) 60 Return info.Exists 61 End Function 62 63 /*! 64 @brief カレントディレクトリを取得する 65 @return カレントディレクトリを示すパス 66 */ 22 67 Static Function GetCurrentDirectory() As String 23 End Function 24 68 Return System.Environment.CurrentDirectory 69 End Function 70 71 /* 25 72 Static Function GetAccessControl(path As String) As DirectorySecurity 26 End Function 73 End Function 27 74 28 75 Static Function GetAccessControl(path As String, includeSections As System.Security.AccessControl.AccessControlSections) As DirectorySecurity 29 76 End Function 30 31 Static Function GetCreationTime(oath As String) As DateTime 32 End Function 33 77 */ 78 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 87 End Function 88 89 /*! 90 @brief ディレクトリの作成日をUTC時刻で取得する 91 @param ディレクトリを示すパス 92 @return 作成日(UTC) 93 */ 34 94 Static Function GetCreationTimeUtc(path As String) As DateTime 35 End Function 36 95 Dim info = New DirectoryInfo(path) 96 Return info.CreationTimeUtc 97 End Function 98 99 /*! 100 @brief ディレクトリ内のディレクトリを列挙する 101 @param 中身を調べるディレクトリのパス 102 @return ディレクトリのパス文字列が列挙された配列 103 */ 37 104 Static Function GetDirectories(path As String) As List<String> 38 End Function 39 105 Return GetDirectories(path, "?*", SearchOption.TopDirectoryOnly) 106 End Function 107 108 /*! 109 @brief ディレクトリ内のディレクトリを列挙する 110 @param 中身を調べるディレクトリのパス 111 @param サーチするディレクトリ名のパターン 112 @return ディレクトリのパス文字列が列挙された配列 113 */ 40 114 Static Function GetDirectories(path As String, searchPattern As String) As List<String> 41 End Function 42 115 Return GetDirectories(path, searchPattern, SearchOption.TopDirectoryOnly) 116 End Function 117 118 /*! 119 @brief ディレクトリ内のディレクトリを列挙する 120 @param 中身を調べるディレクトリのパス 121 @param サーチするディレクトリ名のパターン 122 @param サーチする範囲 123 @return ディレクトリのパス文字列が列挙された配列 124 */ 43 125 Static Function GetDirectories(path As String, searchPattern As String, searchOption As SearchOption) As List<String> 44 End Function 45 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 134 End Function 135 136 /*! 137 @brief ディレクトリのルートディレクトリを取得する 138 @param ディレクトリのパス 139 @return ルートディレクトリ 140 */ 46 141 Static Function GetDirectoryRoot(path As String) As String 47 End Function 48 142 Return Path.GetPathRoot(path) 143 End Function 144 145 /*! 146 @brief ディレクトリ内のファイルを列挙する 147 @param 中身を調べるディレクトリのパス 148 @return ファイルのパス文字列が列挙された配列 149 */ 49 150 Static Function GetFiles(path As String) As List<String> 50 End Function 51 151 Return GetFiles(path, "?*", SearchOption.TopDirectoryOnly) 152 End Function 153 154 /*! 155 @brief ディレクトリ内のファイルを列挙する 156 @param 中身を調べるディレクトリのパス 157 @param サーチするファイル名のパターン 158 @return ファイルのパス文字列が列挙された配列 159 */ 52 160 Static Function GetFiles(path As String, searchPattern As String) As List<String> 53 End Function 54 161 Return GetFiles(path, searchPattern, SearchOption.TopDirectoryOnly) 162 End Function 163 164 /*! 165 @brief ディレクトリ内のファイルを列挙する 166 @param 中身を調べるディレクトリのパス 167 @param サーチするファイル名のパターン 168 @param サーチする範囲 169 @return ファイルのパス文字列が列挙された配列 170 */ 55 171 Static Function GetFiles(path As String, searchPattern As String, searchOption As SearchOption) As List<String> 56 End Function 57 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 180 End Function 181 182 /*! 183 @brief ディレクトリ内を列挙する 184 @param 中身を調べるディレクトリのパス 185 @return ファイルやディレクトリのパス文字列が列挙された配列 186 */ 58 187 Static Function GetFileSystemEnties(path As String) As List<String> 59 End Function 60 188 Return GetFileSystemEnties(path, "?*") 189 End Function 190 191 /*! 192 @brief ディレクトリ内を列挙する 193 @param 中身を調べるディレクトリのパス 194 @param サーチするファイル名のパターン 195 @return ファイルやディレクトリのパス文字列が列挙された配列 196 */ 61 197 Static Function GetFileSystemEnties(path As String, searchPattern As String) As List<String> 62 End Function 63 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 206 End Function 207 208 /*! 209 @brief ディレクトリの最終アクセス日を取得する 210 @param ディレクトリのパス 211 @return 最終アクセス日 212 */ 64 213 Static Function GetLastAccessTime(path As String) As DateTime 65 End Function 66 214 Dim info = New DirectoryInfo(path) 215 Return info.LastAccessTime 216 End Function 217 218 /*! 219 @brief ディレクトリの最終アクセス日をUTC時刻で取得する 220 @param ディレクトリのパス 221 @return 最終アクセス日(UTC) 222 */ 67 223 Static Function GetLastAccessTimeUtc(path As String) As DateTime 68 End Function 69 224 Dim info = New DirectoryInfo(path) 225 Return info.LastAccessTimeUtc 226 End Function 227 228 /*! 229 @brief ディレクトリの最終書き込み日を取得する 230 @param ディレクトリのパス 231 @return 最終書き込み日 232 */ 70 233 Static Function GetLastWriteTime(path As String) As DateTime 71 End Function 72 234 Dim info = New DirectoryInfo(path) 235 Return info.LastWriteTime 236 End Function 237 238 /*! 239 @brief ディレクトリの最終書き込み日をUTC時刻で取得する 240 @param ディレクトリのパス 241 @return 最終書き込み日(UTC) 242 */ 73 243 Static Function GetLastWriteTimeUtc(path As String) As DateTime 74 End Function 75 244 Dim info = New DirectoryInfo(path) 245 Return info.LastWriteTimeUtc 246 End Function 247 248 /*! 249 @brief 使用可能な論理ドライブを列挙する 250 @return 論理ドライブを列挙したパス文字列 251 */ 76 252 Static Function GetLogicalDrives() As List<String> 77 End Function 78 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 266 End Function 267 268 /*! 269 @brief ディレクトリのひとつ上のディレクトリを取得する 270 @param ディレクトリのパス 271 @return ひとつ上のディレクトリ 272 */ 79 273 Static Function GetParent(path As String) As DirectoryInfo 80 End Function 81 274 Return New DirectoryInfo(Path.GetDirectoryName(path)) 275 End Function 276 277 /*! 278 @brief ディレクトリを移動する 279 @param 移動元のディレクトリのパス 280 @param 移動後のディレクトリのパス 281 */ 82 282 Static Sub Move(sourceDirName As String, destDirName As String) 83 End Sub 84 283 Dim info = New DirectoryInfo(sourceDirName) 284 info.MoveTo(destDirName) 285 End Sub 286 287 /* 85 288 Static Sub SetAccessControl(path As String, directorySecurity As DirectorySecurity) 86 289 End Sub 87 290 */ 291 292 /*! 293 @brief ディレクトリの作成日を設定する 294 @param ディレクトリのパス 295 @param 作成日 296 */ 88 297 Static Sub SetCreationTime(path As String, creationTime As DateTime) 89 End Sub 90 298 Dim info = New DirectoryInfo(path) 299 info.CreationTime = creationTime 300 End Sub 301 302 /*! 303 @brief ディレクトリの作成日をUTC時刻で設定する 304 @param ディレクトリのパス 305 @param 作成日(UTC) 306 */ 91 307 Static Sub SetCreationTimeUtc(path As String, creationTime As DateTime) 92 End Sub 93 308 Dim info = New DirectoryInfo(path) 309 info.CreationTimeUtc = creationTime 310 End Sub 311 312 /*! 313 @brief カレントディレクトリを設定する 314 @param ディレクトリのパス 315 */ 94 316 Static Sub SetCurrentDirectory(path As String) 95 End Sub 96 317 System.Environment.CurrentDirectory = path 318 End Sub 319 320 /*! 321 @brief ディレクトリの最終アクセス日を設定する 322 @param ディレクトリのパス 323 @param 最終アクセス日 324 */ 97 325 Static Sub SetLastAccessTime(path As String, lastAccessTime As DateTime) 98 End Sub 99 326 Dim info = New DirectoryInfo(path) 327 info.LastAccessTime = lastAccessTime 328 End Sub 329 330 /*! 331 @brief ディレクトリの最終アクセス日をUTC時刻で設定する 332 @param ディレクトリのパス 333 @param 最終アクセス日(UTC) 334 */ 100 335 Static Sub SetLastAccessTimeUtc(path As String, lastAccessTime As DateTime) 101 End Sub 102 336 Dim info = New DirectoryInfo(path) 337 info.LastAccessTimeUtc = lastAccessTime 338 End Sub 339 340 /*! 341 @brief ディレクトリの最終書き込み日を設定する 342 @param ディレクトリのパス 343 @param 最終書き込み日 344 */ 103 345 Static Sub SetLastWriteTime(path As String, lastWriteTime As DateTime) 104 End Sub 105 346 Dim info = New DirectoryInfo(path) 347 info.LastWriteTime = lastWriteTime 348 End Sub 349 350 /*! 351 @brief ディレクトリの最終書き込み日をUTC時刻で設定する 352 @param ディレクトリのパス 353 @param 最終書き込み日(UTC) 354 */ 106 355 Static Sub SetLastWriteTimeUtc(path As String, lastWriteTime As DateTime) 356 Dim info = New DirectoryInfo(path) 357 info.LastWriteTimeUtc = lastWriteTime 107 358 End Sub 108 359 End Class 360 361 /* 名前が被ってメソッドから呼び出せない */ 362 Function WIN32API_GetLogicalDrives() As DWord 363 Return GetLogicalDrives() 364 End Function 109 365 110 366 End Namespace -
trunk/Include/Classes/System/IO/DirectoryInfo.ab
r406 r407 55 55 */ 56 56 Sub Create() 57 CreateDirectory(ToTCStr(FullPath), NULL) 57 If CreateDirectory(ToTCStr(FullPath), NULL) = False Then 58 Dim error = GetLastError() 59 Select Case error 60 Case ERROR_ALREADY_EXISTS 61 Throw New IOException("DirectoryInfo.CreateDirectory: The directory has already existed.") 62 Case Else 63 Throw New IOException("DirectoryInfo.CreateDirectory: Failed to CreateDirectory") 64 65 End Select 66 End If 58 67 End Sub 59 68 … … 98 107 99 108 If SHFileOperation(op) <> 0 Then 100 ' TODO: エラー処理 101 debug 109 Throw New IOException("DirectoryInfo.Delete: Failed to SHFileOperation.") 102 110 End If 103 111 Else … … 254 262 find = FindFirstFile(ToTCStr(Path.Combine(FullPath, searchPattern)), findData) 255 263 If find = INVALID_HANDLE_VALUE Then 256 Return New List<DirectoryInfo> 264 Throw New IOException("DirectoryInfo.GetFileSystemInfos: Failed to FindFirstFile.") 265 Return Nothing 257 266 End If 258 267 … … 274 283 Return files 275 284 Else 276 debug 'Exception285 Throw New IOException("DirectoryInfo.GetFileSystemInfos: Failed to FindNextFile.") 277 286 Return Nothing 278 287 End If … … 287 296 Sub MoveTo(destDirName As String) 288 297 If MoveFile(ToTCStr(FullPath), ToTCStr(destDirName)) = FALSE Then 289 'Exception298 Throw New IOException("DirectoryInfo.MoveTo: Failed to MoveFile.") 290 299 End If 291 300 End Sub -
trunk/Include/Classes/System/IO/FileSystemInfo.ab
r406 r407 245 245 Virtual Sub Delete() 246 246 If DeleteFile(ToTCStr(FullPath)) = FALSE Then 247 Throw 'Exception247 Throw New IOException("DriveInfo.Delete: Failed to DeleteFile.") 248 248 End If 249 249 End Sub … … 258 258 FindClose(hFind) 259 259 260 m_FileAttributes = New FileAttributes(data.dwFileAttributes As Long, "FileAttributes") 261 m_CreationTime = data.ftCreationTime 262 m_LastAccessTime = data.ftLastAccessTime 263 m_LastWriteTime = data.ftLastWriteTime 264 265 m_IsFreshed = True 260 If hFind <> INVALID_HANDLE_VALUE Then 261 m_FileAttributes = New FileAttributes(data.dwFileAttributes As Long, "FileAttributes") 262 m_CreationTime = data.ftCreationTime 263 m_LastAccessTime = data.ftLastAccessTime 264 m_LastWriteTime = data.ftLastWriteTime 265 m_IsFreshed = True 266 Else 267 Throw New IOException("DriveInfo.Refresh: Failed to FindFirstFile.") 268 End If 266 269 End Sub 267 270 … … 280 283 Dim hFile = CreateFile(ToTCStr(FullPath), GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) 281 284 If hFile = INVALID_HANDLE_VALUE Then 282 debug 'Exception285 Throw New IOException("DriveInfo.setFileTime: Failed to CreateFile.") 283 286 Exit Function 284 287 End If 285 288 286 289 If SetFileTime(hFile, m_CreationTime, m_LastAccessTime, m_LastWriteTime) = False Then 287 debug 'Exception290 Throw New IOException("DriveInfo.setFileTime: Failed to SetFileTime.") 288 291 End If 289 292 -
trunk/Include/Classes/System/IO/Path.ab
r404 r407 247 247 For i = 0 To ELM(InvalidPathChars.Length) 248 248 If path.Contains(InvalidPathChars.Substring(i, 1)) Then 249 Throw 249 Throw New ArgumentException("Path.CheckPath: The path contains invalidChars.") 250 250 End If 251 251 Next
Note:
See TracChangeset
for help on using the changeset viewer.