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
|
---|