Changeset 476 for trunk/Include/Classes/System/IO/File.ab
- Timestamp:
- Mar 13, 2008, 12:45:52 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Include/Classes/System/IO/File.ab
r466 r476 2 2 Namespace IO 3 3 4 4 /* 5 @brief ファイルのアクセス方法を表す 6 */ 5 7 Enum FileAccess 6 8 Read = GENERIC_READ … … 9 11 End Enum 10 12 13 /* 14 @brief ファイルの属性を表す 15 */ 11 16 Enum FileAttributes 12 17 Archive = FILE_ATTRIBUTE_ARCHIVE … … 26 31 End Enum 27 32 33 /* 34 @brief ファイルの作成モードを表す 35 */ 28 36 Enum FileMode 29 37 Append = OPEN_ALWAYS … … 35 43 End Enum 36 44 45 /* 46 @brief ファイルの共有を表す 47 */ 37 48 Enum FileShare 38 49 None = 0 … … 43 54 End Enum 44 55 56 /* 57 @brief ファイルの操作,情報を取得するクラス 58 @date 2008/03/13 59 @author OverTaker 60 */ 61 62 Imports System.Collections.Generic 63 45 64 Class File 46 65 Public … … 50 69 '---------------------------------------------------------------- 51 70 52 /* Static Sub AppendAllText( path As String, contents As String ) 53 ' TODO: 実装 54 End Sub*/ 71 /* 72 @brief ファイルにテキストを追加する 73 @param ファイルパス 74 @param 追加するテキスト 75 */ 76 Static Sub AppendAllText( path As String, contents As String ) 77 Dim stream = AppendText(path) As StreamWriter 78 stream.Write(contents) 79 stream.Close() 80 End Sub 55 81 56 82 /* Static Sub AppendAllText( path As String, contents As String, encoding As Encoding ) … … 58 84 End Sub */ 59 85 60 /* Static Function AppendText( path As String ) As StreamWriter 61 ' TODO: 実装 62 End Function*/ 63 86 /* 87 @brief ファイルにテキストを追加するストリームを作成する 88 @param ファイルパス 89 @return ストリームライター 90 */ 91 Static Function AppendText( path As String ) As StreamWriter 92 Return New StreamWriter(Open(path, FileMode.Append)) 93 End Function 94 95 /* 96 @brief ファイルをコピーする(上書きできない) 97 @param コピー元のファイルパス 98 @param コピー先のファイルパス 99 */ 64 100 Static Sub Copy( sourceFileName As String, destFileName As String ) 65 101 Copy(sourceFileName, destFileName, False) 66 102 End Sub 67 103 104 /* 105 @brief ファイルをコピーする 106 @param コピー元のファイルパス 107 @param コピー先のファイルパス 108 @param 上書きする場合True,しない場合False 109 */ 68 110 Static Sub Copy( sourceFileName As String, destFileName As String, overwrite As Boolean ) 69 111 If Not CopyFile(Path.GetFullPath(sourceFileName), Path.GetFullPath(destFileName), overwrite) Then … … 72 114 End Sub 73 115 116 /* 117 @brief 新しいファイルを作成し、そのストリームを取得する 118 @param ファイルパス 119 @return ファイルストリーム 120 */ 74 121 Static Function Create( path As String ) As FileStream 75 122 Return New FileStream(path, FileMode.CreateNew, FileAccess.ReadWrite) … … 96 143 End Sub*/ 97 144 145 /* 146 @brief ファイルを削除する 147 @param ファイルパス 148 */ 98 149 Static Sub Delete( path As String ) 99 If Not DeleteFile( path) Then150 If Not DeleteFile(Path.GetFullPath(path)) Then 100 151 Throw New IOException("File.Delete: Failed to DeleteFile.") 101 152 End If … … 106 157 End Sub*/ 107 158 159 /* 160 @brief ファイルが存在するかどうかを取得する 161 @param ファイルパス 162 @retval True 存在する 163 @retval False 存在しない 164 */ 108 165 Static Function Exists( path As String ) As Boolean 109 166 Dim data As WIN32_FIND_DATA 110 Dim hFind = FindFirstFile(ToTCStr( path), data)167 Dim hFind = FindFirstFile(ToTCStr(Path.GetFullPath(path)), data) 111 168 FindClose(hFind) 112 169 … … 126 183 End Function */ 127 184 185 /* 186 @brief ファイルの属性を取得する 187 @param ファイルパス 188 @return ファイル属性 189 */ 128 190 Static Function GetAttributes( path As String ) As FileAttributes 129 191 Return New FileAttributes(getFileData(path).dwFileAttributes As Long, "FileAttributes") 130 192 End Function 131 193 194 /* 195 @brief ファイルの作成日時を取得する 196 @param ファイルパス 197 @return 作成日時 198 */ 132 199 Static Function GetCreationTime( path As String ) As DateTime 133 200 Return System.DateTime.FromFileTime(getFileData(path).ftCreationTime) 134 201 End Function 135 202 203 /* 204 @brief ファイルの作成日時をUTC時刻で取得する 205 @param ファイルパス 206 @return 作成日時 207 */ 136 208 Static Function GetCreationTimeUtc( path As String ) As DateTime 137 209 Return System.DateTime.FromFileTimeUtc(getFileData(path).ftCreationTime) 138 210 End Function 139 211 212 /* 213 @brief ファイルの最終アクセス日時を取得する 214 @param ファイルパス 215 @return 最終アクセス日時 216 */ 140 217 Static Function GetLastAccessTime( path As String ) As DateTime 141 218 Return System.DateTime.FromFileTime(getFileData(path).ftLastAccessTime) 142 219 End Function 143 220 221 /* 222 @brief ファイルの最終アクセス日時をUTC時刻で取得する 223 @param ファイルパス 224 @return 最終アクセス日時 225 */ 144 226 Static Function GetLastAccessTimeUtc( path As String ) As DateTime 145 227 Return System.DateTime.FromFileTimeUtc(getFileData(path).ftLastAccessTime) 146 228 End Function 147 229 230 /* 231 @brief ファイルの最終書き込み日時を取得する 232 @param ファイルパス 233 @return 最終書き込み日時 234 */ 148 235 Static Function GetLastWriteTime( path As String ) As DateTime 149 236 Return System.DateTime.FromFileTime(getFileData(path).ftLastWriteTime) 150 237 End Function 151 238 239 /* 240 @brief ファイルの最終書き込み日時をUTC時刻で取得する 241 @param ファイルパス 242 @return 最終書き込み日時 243 */ 152 244 Static Function GetLastWriteTimeUtc( path As String ) As DateTime 153 245 Return System.DateTime.FromFileTimeUtc(getFileData(path).ftLastWriteTime) 154 246 End Function 155 247 248 /* 249 @brief ファイルを移動する 250 @param 移動元のファイルパス 251 @param 移動先のファイルパス 252 */ 156 253 Static Sub Move( sourceFileName As String, destFileName As String ) 157 254 If Not MoveFile(Path.GetFullPath(sourceFileName), Path.GetFullPath(destFileName)) Then … … 160 257 End Sub 161 258 259 /* 260 @brief ファイルストリームを作成する 261 @param ファイルパス 262 @param ファイルモード 263 @return ファイルストリーム 264 */ 162 265 Static Function Open( path As String, mode As FileMode ) As FileStream 163 266 Return New FileStream(path, mode) 164 267 End Function 165 268 269 /* 270 @brief ファイルストリームを作成する 271 @param ファイルパス 272 @param ファイルモード 273 @param ファイルアクセス 274 @return ファイルストリーム 275 */ 166 276 Static Function Open( path As String, mode As FileMode, access As FileAccess ) As FileStream 167 277 Return New FileStream(path, mode, access) 168 278 End Function 169 279 280 /* 281 @brief ファイルストリームを作成する 282 @param ファイルパス 283 @param ファイルモード 284 @param ファイルアクセス 285 @param ファイル共有 286 @return ファイルストリーム 287 */ 170 288 Static Function Open( path As String, mode As FileMode, access As FileAccess, share As FileShare ) As FileStream 171 289 Return New FileStream(path, mode, access, share) 172 290 End Function 173 291 292 /* 293 @brief 読み取り専用のファイルストリームを作成する 294 @param ファイルパス 295 @return ファイルストリーム 296 */ 174 297 Static Function OpenRead( path As String ) As FileStream 175 298 Return Open(path, FileMode.Open, FileAccess.Read, FileShare.Read) 176 299 End Function 177 300 301 /* 302 @brief 読み取り専用のストリームを作成する 303 @param ファイルパス 304 @return ストリームリーダー 305 */ 178 306 Static Function OpenText( path As String ) As StreamReader 179 307 Return New StreamReader(path) 180 308 End Function 181 309 310 /* 311 @brief 書き込み専用のファイルストリームを作成する 312 @param ファイルパス 313 @return ファイルストリーム 314 */ 182 315 Static Function OpenWrite( path As String ) As FileStream 183 316 Return Open(path, FileMode.Open, FileAccess.Write) … … 188 321 End Function*/ 189 322 190 /* Static Function ReadAllLines( path As String ) As Strings 191 ' TODO: 実装 192 End Function */ 323 /* 324 @brief ファイルのすべての行を読み取る 325 @param ファイルパス 326 @return 各行の文字列が格納されたリスト 327 */ 328 Static Function ReadAllLines( path As String ) As List<String> 329 Dim stream = New StreamReader(path) 330 Dim readLines As List<String> 331 Dim readLine = stream.ReadLine() As String 332 While Not ActiveBasic.IsNothing(readLine) 333 readLines.Add(readLine) 334 readLine = stream.ReadLine() 335 Wend 336 stream.Close() 337 Return readLines 338 End Function 193 339 194 340 /* Static Function ReadAllLines( path As String, encoding As Encoding ) As Strings … … 196 342 End Function */ 197 343 198 /* Static Function ReadAllText( path As String ) As String 199 ' TODO: 実装 200 End Function*/ 344 /* 345 @brief ファイルをすべて文字列として読み込む 346 @param ファイルパス 347 @return ファイルの内容 348 */ 349 Static Function ReadAllText( path As String ) As String 350 Dim stream = OpenText(path) 351 Dim string = stream.ReadToEnd() 352 stream.Close() 353 Return string 354 End Function 201 355 202 356 /* Static Function ReadAllText( path As String, encoding As Encoding ) As String … … 204 358 End Function */ 205 359 206 /* Static Sub Replace( sourceFileName As String, destinationFileName As String, destinationBackupFileName As String ) 360 /* 361 @brief ファイルを置き換える 362 @param 置き換えるファイルパス 363 @param 置き換えられるファイルパス 364 @param 置き換えられるファイルのバックアップを作成するファイルパス 365 */ 366 Static Sub Replace( sourceFileName As String, destinationFileName As String, destinationBackupFileName As String ) 367 Copy(destinationFileName, destinationBackupFileName) 368 Copy(sourceFileName, destinationFileName, True) 369 End Sub 370 371 /* Static Sub Replace( sourceFileName As String, destinationFileName As String, destinationBackupFileName As String, ignoreMetadataErrors As Boolean ) 207 372 ' TODO: 実装 208 373 End Sub*/ 209 374 210 /* Static Sub Replace( sourceFileName As String, destinationFileName As String, destinationBackupFileName As String, ignoreMetadataErrors As Boolean )211 ' TODO: 実装212 End Sub*/213 214 375 /* Static Sub SetAccessControl( path As String, fileSecurity As FileSecurity ) 215 376 ' TODO: 実装 216 377 End Sub */ 217 378 379 /* 380 @brief ファイルの属性を設定する 381 @param ファイルパス 382 @param ファイル属性 383 */ 218 384 Static Sub SetAttributes( path As String, fileAttributes As FileAttributes ) 219 385 If Not SetFileAttributes(ToTCStr(path), fileAttributes) Then … … 222 388 End Sub 223 389 390 /* 391 @brief ファイルの作成日時を設定する 392 @param ファイルパス 393 @param 作成日時 394 */ 224 395 Static Sub SetCreationTime( path As String, creationTime As DateTime ) 225 396 SetCreationTimeUtc(path, creationTime) 226 397 End Sub 227 398 399 /* 400 @brief ファイルの作成日時をUTC時刻で設定する 401 @param ファイルパス 402 @param 作成日時 403 */ 228 404 Static Sub SetCreationTimeUtc( path As String, creationTimeUtc As DateTime ) 229 405 Dim hFile = createFileToSetTime(path) As HANDLE … … 232 408 End Sub 233 409 410 /* 411 @brief ファイルの最終アクセス日時を設定する 412 @param ファイルパス 413 @param 最終アクセス日時 414 */ 234 415 Static Sub SetLastAccessTime( path As String, lastAccessTime As DateTime ) 235 416 SetLastAccessTimeUtc(path, lastAccessTime) 236 417 End Sub 237 418 419 /* 420 @brief ファイルの最終アクセス日時をUTC時刻で設定する 421 @param ファイルパス 422 @param 最終アクセス日時 423 */ 238 424 Static Sub SetLastAccessTimeUtc( path As String, lastAccessTimeUtc As DateTime ) 239 425 Dim hFile = createFileToSetTime(path) As HANDLE … … 242 428 End Sub 243 429 430 431 /* 432 @brief ファイルの最終書き込み日時を設定する 433 @param ファイルパス 434 @param 最終書き込み日時 435 */ 244 436 Static Sub SetLastWriteTime( path As String, lastWriteTime As DateTime ) 245 437 SetLastWriteTimeUtc(path, lastWriteTime) 246 438 End Sub 247 439 440 /* 441 @brief ファイルの最終書き込み日時をUTC時刻で設定する 442 @param ファイルパス 443 @param 最終書き込み日時 444 */ 248 445 Static Sub SetLastWriteTimeUtc( path As String, lastWriteTimeUtc As DateTime ) 249 446 Dim hFile = createFileToSetTime(path) As HANDLE … … 256 453 End Sub*/ 257 454 258 /* Static Sub WriteAllLines( path As String, contents As Strings ) 455 /* 456 @brief リストに格納された文字列を一行ずつファイルに書き込む 457 @param ファイルパス 458 @param 書き込む文字列リスト 459 */ 460 Static Sub WriteAllLines( path As String, contents As List<String> ) 461 Dim stream = New StreamWriter(path) 462 Dim enumerator = contents.GetEnumerator() 463 enumerator.Reset() 464 While enumerator.MoveNext() 465 stream.WriteLine(enumerator.Current) 466 Wend 467 stream.Close() 468 End Sub 469 470 /* Static Sub WriteAllLines( path As String, contents As Strings, encoding As Enconding ) 259 471 ' TODO: 実装 260 472 End Sub */ 261 473 262 /* Static Sub WriteAllLines( path As String, contents As Strings, encoding As Enconding ) 474 /* 475 @brief ファイルに文字列を書き込む 476 @param ファイルパス 477 @param 書き込む文字列 478 */ 479 Static Sub WriteAllText( path As String, contents As String ) 480 Dim stream = New StreamWriter(path) 481 stream.Write(contents) 482 stream.Close() 483 End Sub 484 485 /* Static Sub WriteAllText( path As String, contents As String, encoding As Enconding ) 263 486 ' TODO: 実装 264 487 End Sub */ 265 488 266 /* Static Sub WriteAllText( path As String, contents As String )267 ' TODO: 実装268 End Sub*/269 270 /* Static Sub WriteAllText( path As String, contents As String, encoding As Enconding )271 ' TODO: 実装272 End Sub */273 274 489 Private 275 490 '---------------------------------------------------------------- 491 ' プライベート メソッド 492 '---------------------------------------------------------------- 493 494 /* 495 @brief ファイルの情報を取得する 496 @param ファイルパス 497 @return WIN32_FIND_DATA構造体 498 */ 276 499 Static Function getFileData(path As String) As WIN32_FIND_DATA 277 500 Dim data As WIN32_FIND_DATA … … 286 509 End Function 287 510 511 /* 512 @brief ファイルの各種日時を変更するためのファイル作成を行う 513 @param ファイルパス 514 @return ファイルハンドル 515 */ 288 516 Static Function createFileToSetTime(path As String) As HANDLE 289 517 Dim hFile As HANDLE
Note:
See TracChangeset
for help on using the changeset viewer.