]> git.saurik.com Git - wxWidgets.git/blob - docs/latex/wx/file.tex
wxThread::Kill() doesn't call OnExit() incorrectly
[wxWidgets.git] / docs / latex / wx / file.tex
1 \section{\class{wxFile}}\label{wxfile}
2
3 A wxFile performs raw file I/O. This is a very small class designed to
4 minimize the overhead of using it - in fact, there is hardly any overhead at
5 all, but using it brings you automatic error checking and hides differences
6 between platforms and compilers. wxFile also automatically closes the file in
7 its destructor making it unnecessary to worry about forgetting to do it.
8
9 \wxheading{Derived from}
10
11 None.
12
13 \wxheading{Include files}
14
15 <wx/file.h>
16
17 \wxheading{Constants}
18
19 wx/file.h defines the following constants:
20
21 \begin{verbatim}
22 #define wxS_IRUSR 00400
23 #define wxS_IWUSR 00200
24 #define wxS_IXUSR 00100
25
26 #define wxS_IRGRP 00040
27 #define wxS_IWGRP 00020
28 #define wxS_IXGRP 00010
29
30 #define wxS_IROTH 00004
31 #define wxS_IWOTH 00002
32 #define wxS_IXOTH 00001
33
34 // default mode for the new files: corresponds to umask 022
35 #define wxS_DEFAULT (wxS_IRUSR | wxS_IWUSR | wxS_IRGRP | wxS_IWGRP | wxS_IROTH | wxS_IWOTH)
36 \end{verbatim}
37
38 These constants define the file access rights and are used with
39 \helpref{wxFile::Create}{wxfilecreate} and \helpref{wxFile::Open}{wxfileopen}.
40
41 The {\it OpenMode} enumeration defines the different modes for opening a file,
42 it's defined inside wxFile class so its members should be specified with {\it wxFile::} scope
43 resolution prefix. It is also used with \helpref{wxFile::Access}{wxfileaccess} function.
44
45 \twocolwidtha{7cm}
46 \begin{twocollist}\itemsep=0pt%
47 \twocolitem{{\bf wxFile::read}}{Open file for reading or test if it can be opened for reading with Access()}
48 \twocolitem{{\bf wxFile::write}}{Open file for writing deleting the contents of the file if it already exists
49 or test if it can be opened for writing with Access()}
50 \twocolitem{{\bf wxFile::read\_write}}{Open file for reading and writing; can not be used with Access()}
51 \twocolitem{{\bf wxFile::write\_append}}{Open file for appending: the file is opened for writing, but the old
52 contents of the file is not erased and the file pointer is initially placed at the end of the file;
53 can not be used with Access()}
54 \end{twocollist}
55
56 Other constants defined elsewhere but used by wxFile functions are wxInvalidOffset which represents an
57 invalid value of type {\it off\_t} and is returned by functions returning {\it off\_t} on error and the seek
58 mode constants used with \helpref{Seek()}{wxfileseek}:
59
60 \twocolwidtha{7cm}
61 \begin{twocollist}\itemsep=0pt%
62 \twocolitem{{\bf wxFromStart}}{Count offset from the start of the file}
63 \twocolitem{{\bf wxFromCurrent}}{Count offset from the current position of the file pointer}
64 \twocolitem{{\bf wxFromEnd}}{Count offset from the end of the file (backwards)}
65 \end{twocollist}
66
67 \latexignore{\rtfignore{\wxheading{Members}}}
68
69 \membersection{wxFile::wxFile}\label{wxfileconstr}
70
71 \func{}{wxFile}{\void}
72
73 Default constructor.
74
75 \func{}{wxFile}{\param{const char*}{ filename}, \param{wxFile::OpenMode}{ mode = wxFile::read}}
76
77 Opens a file with the given mode. As there is no way to return whether the
78 operation was successful or not from the constructor you should test the
79 return value of \helpref{IsOpened}{wxfileisopened} to check that it didn't
80 fail.
81
82 \func{}{wxFile}{\param{int}{ fd}}
83
84 Associates the file with the given file descriptor, which has already been opened.
85
86 \wxheading{Parameters}
87
88 \docparam{filename}{The filename.}
89
90 \docparam{mode}{The mode in which to open the file. May be one of {\bf wxFile::read}, {\bf wxFile::write} and {\bf wxFile::read\_write}.}
91
92 \docparam{fd}{An existing file descriptor (see \helpref{Attach()}{wxfileattach} for the list of predefined descriptors)}
93
94 \membersection{wxFile::\destruct{wxFile}}
95
96 \func{}{\destruct{wxFile}}{\void}
97
98 Destructor will close the file.
99
100 NB: it is not virtual so you should use wxFile polymorphically.
101
102 \membersection{wxFile::Access}\label{wxfileaccess}
103
104 \func{static bool}{Access}{\param{const char *}{ name}, \param{OpenMode}{ mode}}
105
106 This function verifies if we may access the given file in specified mode. Only
107 values of wxFile::read or wxFile::write really make sense here.
108
109 \membersection{wxFile::Attach}\label{wxfileattach}
110
111 \func{void}{Attach}{\param{int}{ fd}}
112
113 Attaches an existing file descriptor to the wxFile object. Example of predefined
114 file descriptors are 0, 1 and 2 which correspond to stdin, stdout and stderr (and
115 have symbolic names of {\bf wxFile::fd\_stdin}, {\bf wxFile::fd\_stdout} and {\bf wxFile::fd\_stderr}).
116
117 The descriptor should be already opened and it will be closed by wxFile
118 object.
119
120 \membersection{wxFile::Close}\label{wxfileclose}
121
122 \func{void}{Close}{\void}
123
124 Closes the file.
125
126 \membersection{wxFile::Create}\label{wxfilecreate}
127
128 \func{bool}{Create}{\param{const char*}{ filename}, \param{bool}{ overwrite = FALSE}, \param{int }{access = wxS\_DEFAULT}}
129
130 Creates a file for writing. If the file already exists, setting {\bf overwrite} to TRUE
131 will ensure it is overwritten.
132
133 \membersection{wxFile::Detach}\label{wxfiledetach}
134
135 \func{void}{Detach}{\void}
136
137 Get back a file descriptor from wxFile object - the caller is responsible for closing the file if this
138 descriptor is opened. \helpref{IsOpened()}{wxfileisopened} will return FALSE after call to Detach().
139
140 \membersection{wxFile::fd}\label{wxfilefd}
141
142 \constfunc{int}{fd}{\void}
143
144 Returns the file descriptor associated with the file.
145
146 \membersection{wxFile::Eof}\label{wxfileeof}
147
148 \constfunc{bool}{Eof}{\void}
149
150 Returns TRUE if the end of the file has been reached.
151
152 Note that the behaviour of the file pointer based class
153 \helpref{wxFFile}{wxffile} is different as \helpref{wxFFile::Eof}{wxffileeof}
154 will return TRUE here only if an attempt has been made to read
155 {\it past} the last byte of the file, while wxFile::Eof() will return TRUE
156 even before such attempt is made if the file pointer is at the last position
157 in the file.
158
159 Note also that this function doesn't work on unseekable file descriptors
160 (examples include pipes, terminals and sockets under Unix) and an attempt to
161 use it will result in an error message in such case.
162
163 \membersection{wxFile::Exists}\label{wxfileexists}
164
165 \func{static bool}{Exists}{\param{const char*}{ filename}}
166
167 Returns TRUE if the given name specifies an existing regular file (not a
168 directory or a link)
169
170 \membersection{wxFile::Flush}\label{wxfileflush}
171
172 \func{bool}{Flush}{\void}
173
174 Flushes the file descriptor.
175
176 Note that wxFile::Flush is not implemented on some Windows compilers
177 due to a missing fsync function, which reduces the usefulness of this function
178 (it can still be called but it will do nothing on unsupported compilers).
179
180 \membersection{wxFile::IsOpened}\label{wxfileisopened}
181
182 \constfunc{bool}{IsOpened}{\void}
183
184 Returns TRUE if the file has been opened.
185
186 \membersection{wxFile::Length}\label{wxfilelength}
187
188 \constfunc{off\_t}{Length}{\void}
189
190 Returns the length of the file.
191
192 \membersection{wxFile::Open}\label{wxfileopen}
193
194 \func{bool}{Open}{\param{const char*}{ filename}, \param{wxFile::OpenMode}{ mode = wxFile::read}}
195
196 Opens the file, returning TRUE if successful.
197
198 \wxheading{Parameters}
199
200 \docparam{filename}{The filename.}
201
202 \docparam{mode}{The mode in which to open the file. May be one of {\bf wxFile::read}, {\bf wxFile::write} and {\bf wxFile::read\_write}.}
203
204 \membersection{wxFile::Read}\label{wxfileread}
205
206 \func{off\_t}{Read}{\param{void*}{ buffer}, \param{off\_t}{ count}}
207
208 Reads the specified number of bytes into a buffer, returning the actual number read.
209
210 \wxheading{Parameters}
211
212 \docparam{buffer}{A buffer to receive the data.}
213
214 \docparam{count}{The number of bytes to read.}
215
216 \wxheading{Return value}
217
218 The number of bytes read, or the symbol {\bf wxInvalidOffset} (-1) if there was an error.
219
220 \membersection{wxFile::Seek}\label{wxfileseek}
221
222 \func{off\_t}{Seek}{\param{off\_t }{ofs}, \param{wxSeekMode }{mode = wxFromStart}}
223
224 Seeks to the specified position.
225
226 \wxheading{Parameters}
227
228 \docparam{ofs}{Offset to seek to.}
229
230 \docparam{mode}{One of {\bf wxFromStart}, {\bf wxFromEnd}, {\bf wxFromCurrent}.}
231
232 \wxheading{Return value}
233
234 The actual offset position achieved, or wxInvalidOffset on failure.
235
236 \membersection{wxFile::SeekEnd}\label{wxfileseekend}
237
238 \func{off\_t}{SeekEnd}{\param{off\_t }{ofs = 0}}
239
240 Moves the file pointer to the specified number of bytes before the end of the file.
241
242 \wxheading{Parameters}
243
244 \docparam{ofs}{Number of bytes before the end of the file.}
245
246 \wxheading{Return value}
247
248 The actual offset position achieved, or wxInvalidOffset on failure.
249
250 \membersection{wxFile::Tell}\label{wxfiletell}
251
252 \constfunc{off\_t}{Tell}{\void}
253
254 Returns the current position or wxInvalidOffset if file is not opened or if another
255 error occured.
256
257 \membersection{wxFile::Write}\label{wxfilewrite}
258
259 \func{bool}{Write}{\param{const void*}{ buffer}, \param{off\_t}{ count}}
260
261 Writes the specified number of bytes from a buffer.
262
263 \wxheading{Parameters}
264
265 \docparam{buffer}{A buffer containing the data.}
266
267 \docparam{count}{The number of bytes to write.}
268
269 \wxheading{Return value}
270
271 TRUE if the operation was successful.
272
273 \membersection{wxFile::Write}\label{wxfilewrites}
274
275 \func{bool}{Write}{\param{const wxString\& }{s}}
276
277 Writes the contents of the string to the file, returns TRUE on success.
278
279 \section{\class{wxFFile}}\label{wxffile}
280
281 A wxFFile performs raw file I/O. This is a very small class designed to
282 minimize the overhead of using it - in fact, there is hardly any overhead at
283 all, but using it brings you automatic error checking and hides differences
284 between platforms and compilers.
285
286 \wxheading{Derived from}
287
288 None.
289
290 \wxheading{Include files}
291
292 <wx/ffile.h>
293
294 \twocolwidtha{7cm}
295 \begin{twocollist}\itemsep=0pt%
296 \twocolitem{{\bf wxFromStart}}{Count offset from the start of the file}
297 \twocolitem{{\bf wxFromCurrent}}{Count offset from the current position of the file pointer}
298 \twocolitem{{\bf wxFromEnd}}{Count offset from the end of the file (backwards)}
299 \end{twocollist}
300
301 \latexignore{\rtfignore{\wxheading{Members}}}
302
303 \membersection{wxFFile::wxFFile}\label{wxffileconstr}
304
305 \func{}{wxFFile}{\void}
306
307 Default constructor.
308
309 \func{}{wxFFile}{\param{const char*}{ filename}, \param{const char*}{ mode = "r"}}
310
311 Opens a file with the given mode. As there is no way to return whether the
312 operation was successful or not from the constructor you should test the
313 return value of \helpref{IsOpened}{wxffileisopened} to check that it didn't
314 fail.
315
316 \func{}{wxFFile}{\param{FILE*}{ fp}}
317
318 Opens a file with the given file pointer, which has already been opened.
319
320 \wxheading{Parameters}
321
322 \docparam{filename}{The filename.}
323
324 \docparam{mode}{The mode in which to open the file using standard C strings.}
325
326 \docparam{fp}{An existing file descriptor, such as stderr.}
327
328 \membersection{wxFFile::\destruct{wxFFile}}
329
330 \func{}{\destruct{wxFFile}}{\void}
331
332 Destructor will close the file.
333
334 NB: it is not virtual so you should {\it not} derive from wxFFile!
335
336 \membersection{wxFFile::Attach}\label{wxffileattach}
337
338 \func{void}{Attach}{\param{FILE*}{ fp}}
339
340 Attaches an existing file pointer to the wxFFile object.
341
342 The descriptor should be already opened and it will be closed by wxFFile
343 object.
344
345 \membersection{wxFFile::Close}\label{wxffileclose}
346
347 \func{bool}{Close}{\void}
348
349 Closes the file and returns TRUE on success.
350
351 \membersection{wxFFile::Detach}\label{wxffiledetach}
352
353 \func{void}{Detach}{\void}
354
355 Get back a file pointer from wxFFile object - the caller is responsible for closing the file if this
356 descriptor is opened. \helpref{IsOpened()}{wxffileisopened} will return FALSE after call to Detach().
357
358 \membersection{wxFFile::fp}\label{wxffilefp}
359
360 \constfunc{FILE *}{fp}{\void}
361
362 Returns the file pointer associated with the file.
363
364 \membersection{wxFFile::Eof}\label{wxffileeof}
365
366 \constfunc{bool}{Eof}{\void}
367
368 Returns TRUE if the an attempt has been made to read {\it past}
369 the end of the file.
370
371 Note that the behaviour of the file descriptor based class
372 \helpref{wxFile}{wxfile} is different as \helpref{wxFile::Eof}{wxfileeof}
373 will return TRUE here as soon as the last byte of the file has been
374 read.
375
376 \membersection{wxFFile::Flush}\label{wxffileflush}
377
378 \func{bool}{Flush}{\void}
379
380 Flushes the file and returns TRUE on success.
381
382 \membersection{wxFFile::IsOpened}\label{wxffileisopened}
383
384 \constfunc{bool}{IsOpened}{\void}
385
386 Returns TRUE if the file has been opened.
387
388 \membersection{wxFFile::Length}\label{wxffilelength}
389
390 \constfunc{size\_t}{Length}{\void}
391
392 Returns the length of the file.
393
394 \membersection{wxFFile::Open}\label{wxffileopen}
395
396 \func{bool}{Open}{\param{const char*}{ filename}, \param{const char*}{ mode = "r"}}
397
398 Opens the file, returning TRUE if successful.
399
400 \wxheading{Parameters}
401
402 \docparam{filename}{The filename.}
403
404 \docparam{mode}{The mode in which to open the file.}
405
406 \membersection{wxFFile::Read}\label{wxffileread}
407
408 \func{size\_t}{Read}{\param{void*}{ buffer}, \param{off\_t}{ count}}
409
410 Reads the specified number of bytes into a buffer, returning the actual number read.
411
412 \wxheading{Parameters}
413
414 \docparam{buffer}{A buffer to receive the data.}
415
416 \docparam{count}{The number of bytes to read.}
417
418 \wxheading{Return value}
419
420 The number of bytes read.
421
422 \membersection{wxFFile::Seek}\label{wxffileseek}
423
424 \func{bool}{Seek}{\param{long }{ofs}, \param{wxSeekMode }{mode = wxFromStart}}
425
426 Seeks to the specified position and returs TRUE on success.
427
428 \wxheading{Parameters}
429
430 \docparam{ofs}{Offset to seek to.}
431
432 \docparam{mode}{One of {\bf wxFromStart}, {\bf wxFromEnd}, {\bf wxFromCurrent}.}
433
434 \membersection{wxFFile::SeekEnd}\label{wxffileseekend}
435
436 \func{bool}{SeekEnd}{\param{long }{ofs = 0}}
437
438 Moves the file pointer to the specified number of bytes before the end of the file
439 and returns TRUE on success.
440
441 \wxheading{Parameters}
442
443 \docparam{ofs}{Number of bytes before the end of the file.}
444
445 \membersection{wxFFile::Tell}\label{wxffiletell}
446
447 \constfunc{size\_t}{Tell}{\void}
448
449 Returns the current position.
450
451 \membersection{wxFFile::Write}\label{wxffilewrite}
452
453 \func{size\_t}{Write}{\param{const void*}{ buffer}, \param{size\_t}{ count}}
454
455 Writes the specified number of bytes from a buffer.
456
457 \wxheading{Parameters}
458
459 \docparam{buffer}{A buffer containing the data.}
460
461 \docparam{count}{The number of bytes to write.}
462
463 \wxheading{Return value}
464
465 Number of bytes written.
466
467 \membersection{wxFFile::Write}\label{wxffilewrites}
468
469 \func{bool}{Write}{\param{const wxString\& }{s}}
470
471 Writes the contents of the string to the file, returns TRUE on success.
472