source: trunk/ab5.0/ablib/src/Classes/System/IO/FileInfo.ab@ 668

Last change on this file since 668 was 562, checked in by イグトランス (egtra), 16 years ago

9xなどで実行できなくなるので、GetFileSizeExをコメントアウト

File size: 5.7 KB
Line 
1Namespace System
2Namespace IO
3
4/*
5@brief ファイルの情報取得,操作をするクラス
6@date 2008/03/14
7@author OverTaker
8*/
9
10Class FileInfo
11 Inherits FileSystemInfo
12Public
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 pLength = VarPtr(Length) As *ULARGE_INTEGER
67 pLength->LowPart = GetFileSize(hFile, VarPtr(pLength->HighPart))
68 CloseHandle(hFile)
69
70 Dim error = GetLastError()
71 If pLength->LowPart = INVALID_FILE_SIZE And error <> NO_ERROR Then
72 Throw New IOException("FileInfo.Length: Failed to GetFileSize", HRESULT_FROM_WIN32(error))
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
229End Class
230
231
232End Namespace
233End Namespace
Note: See TracBrowser for help on using the repository browser.