| 1 | Namespace System
|
|---|
| 2 | Namespace IO
|
|---|
| 3 |
|
|---|
| 4 | /*
|
|---|
| 5 | @brief ファイルの情報取得,操作をするクラス
|
|---|
| 6 | @date 2008/03/14
|
|---|
| 7 | @author OverTaker
|
|---|
| 8 | */
|
|---|
| 9 |
|
|---|
| 10 | Class FileInfo
|
|---|
| 11 | Inherits FileSystemInfo
|
|---|
| 12 | Public
|
|---|
| 13 | /*
|
|---|
| 14 | @brief コンストラクタ
|
|---|
| 15 | @param ファイルパス
|
|---|
| 16 | */
|
|---|
| 17 | Sub FileInfo(path As String)
|
|---|
| 18 | OriginalPath = path
|
|---|
| 19 | FullPath = Path.GetFullPath(path)
|
|---|
| 20 | End Sub
|
|---|
| 21 |
|
|---|
| 22 | '----------------------------------------------------------------
|
|---|
| 23 | ' パブリック プロパティ
|
|---|
| 24 | '----------------------------------------------------------------
|
|---|
| 25 |
|
|---|
| 26 | /*
|
|---|
| 27 | @brief ひとう上のフォルダを取得する
|
|---|
| 28 | @return フォルダを表すDirectoryInfo
|
|---|
| 29 | */
|
|---|
| 30 | Function Directory() As DirectoryInfo
|
|---|
| 31 | Return New DirectoryInfo(Path.GetDirectoryName(FullPath))
|
|---|
| 32 | End Function
|
|---|
| 33 |
|
|---|
| 34 | /*
|
|---|
| 35 | @brief ひとつ上のフォルダ名を取得する
|
|---|
| 36 | @return フォルダを表すファイルパス
|
|---|
| 37 | */
|
|---|
| 38 | Function DirectoryName() As String
|
|---|
| 39 | Return Path.GetDirectoryName(FullPath)
|
|---|
| 40 | End Function
|
|---|
| 41 |
|
|---|
| 42 | /*
|
|---|
| 43 | @brief ファイルが読み取り専用かどうかを取得する
|
|---|
| 44 | @retval True 読み取り専用ファイル
|
|---|
| 45 | @retval False 読み取り専用ファイルではない
|
|---|
| 46 | */
|
|---|
| 47 | Function IsReadOnly() As Boolean
|
|---|
| 48 | If (Attributes and FileAttributes.ReadOnly) = FileAttributes.ReadOnly Then
|
|---|
| 49 | Return True
|
|---|
| 50 | Else
|
|---|
| 51 | Return False
|
|---|
| 52 | End If
|
|---|
| 53 | End Function
|
|---|
| 54 |
|
|---|
| 55 | /*
|
|---|
| 56 | @brief ファイルサイズを取得する
|
|---|
| 57 | @return ファイルサイズ
|
|---|
| 58 | */
|
|---|
| 59 | Function Length() As QWord
|
|---|
| 60 | Dim hFile = CreateFile(ToTCStr(FullPath), GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
|
|---|
| 61 | If hFile = INVALID_HANDLE_VALUE Then
|
|---|
| 62 | Throw New IOException("FileInfo.Length: Failed to CreateFile.")
|
|---|
| 63 | Exit Function
|
|---|
| 64 | End If
|
|---|
| 65 |
|
|---|
| 66 | Dim length As QWord
|
|---|
| 67 | If GetFileSizeEx(hFile, VarPtr(length)) Then
|
|---|
| 68 | CloseHandle(hFile)
|
|---|
| 69 | Return length
|
|---|
| 70 | Else
|
|---|
| 71 | CloseHandle(hFile)
|
|---|
| 72 | Throw New IOException("FileInfo.Length: Failed to GetFileSize")
|
|---|
| 73 | End If
|
|---|
| 74 | End Function
|
|---|
| 75 |
|
|---|
| 76 | '----------------------------------------------------------------
|
|---|
| 77 | ' パブリック メソッド
|
|---|
| 78 | '----------------------------------------------------------------
|
|---|
| 79 |
|
|---|
| 80 | /*
|
|---|
| 81 | @brief ファイルにテキストを追加するストリームライターを作成する
|
|---|
| 82 | @return ストリームライター
|
|---|
| 83 | */
|
|---|
| 84 | Function AppendText() As StreamWriter
|
|---|
| 85 | Return File.AppendText(FullPath)
|
|---|
| 86 | End Function
|
|---|
| 87 |
|
|---|
| 88 | /*
|
|---|
| 89 | @brief ファイルをコピーする(上書きしない)
|
|---|
| 90 | @param コピー先のファイルパス
|
|---|
| 91 | @return コピー先のファイルを表すFileInfo
|
|---|
| 92 | */
|
|---|
| 93 | Function CopyTo(destFileName As String) As FileInfo
|
|---|
| 94 | Return CopyTo(destFileName, False)
|
|---|
| 95 | End Function
|
|---|
| 96 |
|
|---|
| 97 | /*
|
|---|
| 98 | @brief ファイルをコピーする
|
|---|
| 99 | @param コピー先のファイルパス
|
|---|
| 100 | @param ファイルを上書きするかどうか
|
|---|
| 101 | @return コピー先のファイルを表すFileInfo
|
|---|
| 102 | */
|
|---|
| 103 | Function CopyTo(destFileName As String, overwrite As Boolean) As FileInfo
|
|---|
| 104 | File.Copy(FullPath, destFileName, overwrite)
|
|---|
| 105 | Return New FileInfo(destFileName)
|
|---|
| 106 | End Function
|
|---|
| 107 |
|
|---|
| 108 | /*
|
|---|
| 109 | @brief ファイルを作成する
|
|---|
| 110 | @return ファイルストリーム
|
|---|
| 111 | */
|
|---|
| 112 | Function Create() As FileStream
|
|---|
| 113 | Return File.Create(FullPath)
|
|---|
| 114 | End Function
|
|---|
| 115 |
|
|---|
| 116 | /*
|
|---|
| 117 | @brief ファイルを作成し、そのストリームライターを取得する
|
|---|
| 118 | @return ストリームライター
|
|---|
| 119 | */
|
|---|
| 120 | Function CreateText() As StreamWriter
|
|---|
| 121 | Return New StreamWriter(Create())
|
|---|
| 122 | End Function
|
|---|
| 123 |
|
|---|
| 124 | /* Sub Decrypt()
|
|---|
| 125 | End Sub*/
|
|---|
| 126 |
|
|---|
| 127 | /*
|
|---|
| 128 | @brief ファイルを削除する
|
|---|
| 129 | */
|
|---|
| 130 | Override Sub Delete()
|
|---|
| 131 | File.Delete(FullPath)
|
|---|
| 132 | End Sub
|
|---|
| 133 |
|
|---|
| 134 | /* Sub Encrypt()
|
|---|
| 135 | End Sub*/
|
|---|
| 136 |
|
|---|
| 137 | /* Function GetAccessControl() As FileSecurity
|
|---|
| 138 | End Function*/
|
|---|
| 139 |
|
|---|
| 140 | /* Function GetAccessControl(includeSections As AccessControlSections) As FileScurity
|
|---|
| 141 | End Function*/
|
|---|
| 142 |
|
|---|
| 143 | /*
|
|---|
| 144 | @brief ファイルを移動する
|
|---|
| 145 | @param 移動先のファイルパス
|
|---|
| 146 | */
|
|---|
| 147 | Sub MoveTo(destFileName As String)
|
|---|
| 148 | File.Move(FullPath, destFileName)
|
|---|
| 149 | End Sub
|
|---|
| 150 |
|
|---|
| 151 | /*
|
|---|
| 152 | @brief ファイルストリームを作成する
|
|---|
| 153 | @param ファイルモード
|
|---|
| 154 | @return ファイルストリーム
|
|---|
| 155 | */
|
|---|
| 156 | Function Open(mode As FileMode) As FileStream
|
|---|
| 157 | Return New FileStream(FullPath, mode)
|
|---|
| 158 | End Function
|
|---|
| 159 |
|
|---|
| 160 | /*
|
|---|
| 161 | @brief ファイルストリームを作成する
|
|---|
| 162 | @param ファイルモード
|
|---|
| 163 | @param ファイルアクセス
|
|---|
| 164 | @return ファイルストリーム
|
|---|
| 165 | */
|
|---|
| 166 | Function Open(mode As FileMode, access As FileAccess) As FileStream
|
|---|
| 167 | Return New FileStream(FullPath, mode, access)
|
|---|
| 168 | End Function
|
|---|
| 169 |
|
|---|
| 170 | /*
|
|---|
| 171 | @brief ファイルストリームを作成する
|
|---|
| 172 | @param ファイルモード
|
|---|
| 173 | @param ファイルアクセス
|
|---|
| 174 | @param ファイル共有
|
|---|
| 175 | @return ファイルストリーム
|
|---|
| 176 | */
|
|---|
| 177 | Function Open(mode As FileMode, access As FileAccess, share As FileShare ) As FileStream
|
|---|
| 178 | Return New FileStream(FullPath, mode, access, share)
|
|---|
| 179 | End Function
|
|---|
| 180 |
|
|---|
| 181 | /*
|
|---|
| 182 | @brief 読み取り専用のファイルストリームを作成する
|
|---|
| 183 | @return ファイルストリーム
|
|---|
| 184 | */
|
|---|
| 185 | Function OpenRead() As FileStream
|
|---|
| 186 | Return Open(FileMode.Open, FileAccess.Read, FileShare.Read)
|
|---|
| 187 | End Function
|
|---|
| 188 |
|
|---|
| 189 | /*
|
|---|
| 190 | @brief 読み取り専用のストリームを作成する
|
|---|
| 191 | @param ファイルパス
|
|---|
| 192 | @return ストリームリーダー
|
|---|
| 193 | */
|
|---|
| 194 | Function OpenText() As StreamReader
|
|---|
| 195 | Return New StreamReader(FullPath)
|
|---|
| 196 | End Function
|
|---|
| 197 |
|
|---|
| 198 | /*
|
|---|
| 199 | @brief 書き込み専用のファイルストリームを作成する
|
|---|
| 200 | @return ファイルストリーム
|
|---|
| 201 | */
|
|---|
| 202 | Function OpenWrite() As FileStream
|
|---|
| 203 | Return Open(FileMode.Open, FileAccess.Write)
|
|---|
| 204 | End Function
|
|---|
| 205 |
|
|---|
| 206 | /*
|
|---|
| 207 | @brief ファイルを置き換える
|
|---|
| 208 | @param 置き換え先のファイルパス
|
|---|
| 209 | @param 置き換えられるファイルのバックアップを作成するファイルパス
|
|---|
| 210 | */
|
|---|
| 211 | Function Replace(destinationFileName As String, destinationBackupFileName As String) As FileInfo
|
|---|
| 212 | File.Replace(FullPath, destinationFileName, destinationBackupFileName)
|
|---|
| 213 | End Function
|
|---|
| 214 |
|
|---|
| 215 | /* Function Replace(destinationFileName As String, destinationBackupFileName As String, ignoreMetadataErrors As Boolean) As FileInfo
|
|---|
| 216 | End Function*/
|
|---|
| 217 |
|
|---|
| 218 | /* Sub SetAccessControl(fileSecurity As FileSecurity)
|
|---|
| 219 | End Sub*/
|
|---|
| 220 |
|
|---|
| 221 | /*
|
|---|
| 222 | @brief インスタンスを文字列で表す
|
|---|
| 223 | @return ファイルパス
|
|---|
| 224 | */
|
|---|
| 225 | Override Function ToString() As String
|
|---|
| 226 | Return FullPath
|
|---|
| 227 | End Function
|
|---|
| 228 |
|
|---|
| 229 | End Class
|
|---|
| 230 |
|
|---|
| 231 |
|
|---|
| 232 | End Namespace
|
|---|
| 233 | End Namespace
|
|---|