Namespace System Namespace IO /* @brief ファイルの情報取得,操作をするクラス @date 2008/03/14 @author OverTaker */ Class FileInfo Inherits FileSystemInfo Public /* @brief コンストラクタ @param ファイルパス */ Sub FileInfo(path As String) OriginalPath = path FullPath = Path.GetFullPath(path) End Sub '---------------------------------------------------------------- ' パブリック プロパティ '---------------------------------------------------------------- /* @brief ひとつ上のフォルダを取得する @return フォルダを表すDirectoryInfo */ Function Directory() As DirectoryInfo Return New DirectoryInfo(Path.GetDirectoryName(FullPath)) End Function /* @brief ひとつ上のフォルダ名を取得する @return フォルダを表すファイルパス */ Function DirectoryName() As String Return Path.GetDirectoryName(FullPath) End Function /* @brief ファイルが読み取り専用かどうかを取得する @retval True 読み取り専用ファイル @retval False 読み取り専用ファイルではない */ Function IsReadOnly() As Boolean If (Attributes and FileAttributes.ReadOnly) = FileAttributes.ReadOnly Then Return True Else Return False End If End Function /* @brief ファイルサイズを取得する @return ファイルサイズ */ Function Length() As QWord Dim hFile = CreateFile(ToTCStr(FullPath), GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) If hFile = INVALID_HANDLE_VALUE Then Throw New IOException("FileInfo.Length: Failed to CreateFile.") Exit Function End If Dim length As QWord If GetFileSizeEx(hFile, VarPtr(length)) Then CloseHandle(hFile) Return length Else CloseHandle(hFile) Throw New IOException("FileInfo.Length: Failed to GetFileSize") End If End Function '---------------------------------------------------------------- ' パブリック メソッド '---------------------------------------------------------------- /* @brief ファイルにテキストを追加するストリームライターを作成する @return ストリームライター */ Function AppendText() As StreamWriter Return File.AppendText(FullPath) End Function /* @brief ファイルをコピーする(上書きしない) @param コピー先のファイルパス @return コピー先のファイルを表すFileInfo */ Function CopyTo(destFileName As String) As FileInfo Return CopyTo(destFileName, False) End Function /* @brief ファイルをコピーする @param コピー先のファイルパス @param ファイルを上書きするかどうか @return コピー先のファイルを表すFileInfo */ Function CopyTo(destFileName As String, overwrite As Boolean) As FileInfo File.Copy(FullPath, destFileName, overwrite) Return New FileInfo(destFileName) End Function /* @brief ファイルを作成する @return ファイルストリーム */ Function Create() As FileStream Return File.Create(FullPath) End Function /* @brief ファイルを作成し、そのストリームライターを取得する @return ストリームライター */ Function CreateText() As StreamWriter Return New StreamWriter(Create()) End Function /* Sub Decrypt() End Sub*/ /* @brief ファイルを削除する */ Override Sub Delete() File.Delete(FullPath) End Sub /* Sub Encrypt() End Sub*/ /* Function GetAccessControl() As FileSecurity End Function*/ /* Function GetAccessControl(includeSections As AccessControlSections) As FileScurity End Function*/ /* @brief ファイルを移動する @param 移動先のファイルパス */ Sub MoveTo(destFileName As String) File.Move(FullPath, destFileName) End Sub /* @brief ファイルストリームを作成する @param ファイルモード @return ファイルストリーム */ Function Open(mode As FileMode) As FileStream Return New FileStream(FullPath, mode) End Function /* @brief ファイルストリームを作成する @param ファイルモード @param ファイルアクセス @return ファイルストリーム */ Function Open(mode As FileMode, access As FileAccess) As FileStream Return New FileStream(FullPath, mode, access) End Function /* @brief ファイルストリームを作成する @param ファイルモード @param ファイルアクセス @param ファイル共有 @return ファイルストリーム */ Function Open(mode As FileMode, access As FileAccess, share As FileShare ) As FileStream Return New FileStream(FullPath, mode, access, share) End Function /* @brief 読み取り専用のファイルストリームを作成する @return ファイルストリーム */ Function OpenRead() As FileStream Return Open(FileMode.Open, FileAccess.Read, FileShare.Read) End Function /* @brief 読み取り専用のストリームを作成する @param ファイルパス @return ストリームリーダー */ Function OpenText() As StreamReader Return New StreamReader(FullPath) End Function /* @brief 書き込み専用のファイルストリームを作成する @return ファイルストリーム */ Function OpenWrite() As FileStream Return Open(FileMode.Open, FileAccess.Write) End Function /* @brief ファイルを置き換える @param 置き換え先のファイルパス @param 置き換えられるファイルのバックアップを作成するファイルパス */ Function Replace(destinationFileName As String, destinationBackupFileName As String) As FileInfo File.Replace(FullPath, destinationFileName, destinationBackupFileName) End Function /* Function Replace(destinationFileName As String, destinationBackupFileName As String, ignoreMetadataErrors As Boolean) As FileInfo End Function*/ /* Sub SetAccessControl(fileSecurity As FileSecurity) End Sub*/ /* @brief インスタンスを文字列で表す @return ファイルパス */ Override Function ToString() As String Return FullPath End Function End Class End Namespace End Namespace