]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/file.tex
added null pointer check and assert
[wxWidgets.git] / docs / latex / wx / file.tex
CommitLineData
f3845e88
VZ
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%% Name: file.tex
3%% Purpose: wxFile documentation
4%% Author: Vadim Zeitlin
5%% Modified by:
6%% Created: 14.01.02 (extracted from file.tex)
7%% RCS-ID: $Id$
8%% Copyright: (c) Vadim Zeitlin
8795498c 9%% License: wxWindows license
f3845e88
VZ
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
a660d684
KB
12\section{\class{wxFile}}\label{wxfile}
13
247aba10
VZ
14A wxFile performs raw file I/O. This is a very small class designed to
15minimize the overhead of using it - in fact, there is hardly any overhead at
16all, but using it brings you automatic error checking and hides differences
e694c22c
VZ
17between platforms and compilers. wxFile also automatically closes the file in
18its destructor making it unnecessary to worry about forgetting to do it.
f6bcfd97
BP
19wxFile is a wrapper around {\tt file descriptor.} - see also
20\helpref{wxFFile}{wxffile} for a wrapper around {\tt FILE} structure.
a660d684 21
6294ac2e 22{\tt wxFileOffset} is used by the wxFile functions which require offsets as
eeb552d0
VZ
23parameter or return them. If the platform supports it, wxFileOffset is a typedef
24for a native 64 bit integer, otherwise a 32 bit integer is used for wxFileOffset.
6294ac2e 25
a660d684
KB
26\wxheading{Derived from}
27
28None.
29
954b8ae6
JS
30\wxheading{Include files}
31
32<wx/file.h>
33
a7af285d
VZ
34\wxheading{Library}
35
36\helpref{wxBase}{librarieslist}
37
247aba10
VZ
38\wxheading{Constants}
39
40wx/file.h defines the following constants:
6be663cf 41
247aba10
VZ
42\begin{verbatim}
43#define wxS_IRUSR 00400
44#define wxS_IWUSR 00200
45#define wxS_IXUSR 00100
46
47#define wxS_IRGRP 00040
48#define wxS_IWGRP 00020
49#define wxS_IXGRP 00010
50
51#define wxS_IROTH 00004
52#define wxS_IWOTH 00002
53#define wxS_IXOTH 00001
54
55// default mode for the new files: corresponds to umask 022
56#define wxS_DEFAULT (wxS_IRUSR | wxS_IWUSR | wxS_IRGRP | wxS_IWGRP | wxS_IROTH | wxS_IWOTH)
57\end{verbatim}
247aba10
VZ
58
59These constants define the file access rights and are used with
60\helpref{wxFile::Create}{wxfilecreate} and \helpref{wxFile::Open}{wxfileopen}.
61
62The {\it OpenMode} enumeration defines the different modes for opening a file,
f6bcfd97 63it is defined inside wxFile class so its members should be specified with {\it wxFile::} scope
6be663cf 64resolution prefix. It is also used with \helpref{wxFile::Access}{wxfileaccess} function.
247aba10 65
6be663cf
JS
66\twocolwidtha{7cm}
67\begin{twocollist}\itemsep=0pt%
247aba10
VZ
68\twocolitem{{\bf wxFile::read}}{Open file for reading or test if it can be opened for reading with Access()}
69\twocolitem{{\bf wxFile::write}}{Open file for writing deleting the contents of the file if it already exists
70or test if it can be opened for writing with Access()}
71\twocolitem{{\bf wxFile::read\_write}}{Open file for reading and writing; can not be used with Access()}
72\twocolitem{{\bf wxFile::write\_append}}{Open file for appending: the file is opened for writing, but the old
73contents of the file is not erased and the file pointer is initially placed at the end of the file;
f6bcfd97
BP
74can not be used with Access(). This is the same as {\bf wxFile::write} if the
75file doesn't exist.}
f1104df1
RL
76\twocolitem{{\bf wxFile::write\_excl}}{Open the file securely for writing (Uses O\_EXCL | O\_CREAT).
77Will fail if the file already exists, else create and open it atomically. Useful for opening temporary files without being vulnerable to race exploits.}
247aba10
VZ
78\end{twocollist}
79
80Other constants defined elsewhere but used by wxFile functions are wxInvalidOffset which represents an
6294ac2e 81invalid value of type {\it wxFileOffset} and is returned by functions returning {\it wxFileOffset} on error and the seek
247aba10
VZ
82mode constants used with \helpref{Seek()}{wxfileseek}:
83
84\twocolwidtha{7cm}
6be663cf 85\begin{twocollist}\itemsep=0pt%
247aba10
VZ
86\twocolitem{{\bf wxFromStart}}{Count offset from the start of the file}
87\twocolitem{{\bf wxFromCurrent}}{Count offset from the current position of the file pointer}
88\twocolitem{{\bf wxFromEnd}}{Count offset from the end of the file (backwards)}
89\end{twocollist}
90
a660d684
KB
91\latexignore{\rtfignore{\wxheading{Members}}}
92
69d31301 93
b236c10f 94\membersection{wxFile::wxFile}\label{wxfilector}
a660d684
KB
95
96\func{}{wxFile}{\void}
97
98Default constructor.
99
fcea31d5 100\func{}{wxFile}{\param{const wxString\&}{ filename}, \param{wxFile::OpenMode}{ mode = wxFile::read}}
a660d684 101
247aba10
VZ
102Opens a file with the given mode. As there is no way to return whether the
103operation was successful or not from the constructor you should test the
104return value of \helpref{IsOpened}{wxfileisopened} to check that it didn't
105fail.
a660d684
KB
106
107\func{}{wxFile}{\param{int}{ fd}}
108
e694c22c 109Associates the file with the given file descriptor, which has already been opened.
a660d684
KB
110
111\wxheading{Parameters}
112
113\docparam{filename}{The filename.}
114
115\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}.}
116
247aba10 117\docparam{fd}{An existing file descriptor (see \helpref{Attach()}{wxfileattach} for the list of predefined descriptors)}
a660d684 118
69d31301 119
b236c10f 120\membersection{wxFile::\destruct{wxFile}}\label{wxfiledtor}
a660d684
KB
121
122\func{}{\destruct{wxFile}}{\void}
123
247aba10 124Destructor will close the file.
a660d684 125
dd0fba48 126{\bf NB:} it is not virtual so you should not use wxFile polymorphically.
247aba10 127
69d31301 128
247aba10 129\membersection{wxFile::Access}\label{wxfileaccess}
6be663cf 130
fcea31d5 131\func{static bool}{Access}{\param{const wxString\&}{ name}, \param{OpenMode}{ mode}}
a660d684 132
247aba10
VZ
133This function verifies if we may access the given file in specified mode. Only
134values of wxFile::read or wxFile::write really make sense here.
135
69d31301 136
247aba10 137\membersection{wxFile::Attach}\label{wxfileattach}
6be663cf 138
a660d684
KB
139\func{void}{Attach}{\param{int}{ fd}}
140
247aba10
VZ
141Attaches an existing file descriptor to the wxFile object. Example of predefined
142file descriptors are 0, 1 and 2 which correspond to stdin, stdout and stderr (and
28c9c76e 143have symbolic names of {\bf wxFile::fd\_stdin}, {\bf wxFile::fd\_stdout} and {\bf wxFile::fd\_stderr}).
247aba10
VZ
144
145The descriptor should be already opened and it will be closed by wxFile
146object.
a660d684 147
69d31301 148
a660d684
KB
149\membersection{wxFile::Close}\label{wxfileclose}
150
151\func{void}{Close}{\void}
152
153Closes the file.
154
69d31301 155
a660d684
KB
156\membersection{wxFile::Create}\label{wxfilecreate}
157
fcea31d5 158\func{bool}{Create}{\param{const wxString\&}{ filename}, \param{bool}{ overwrite = false}, \param{int }{access = wxS\_DEFAULT}}
a660d684 159
cc81d32f 160Creates a file for writing. If the file already exists, setting {\bf overwrite} to true
a660d684
KB
161will ensure it is overwritten.
162
69d31301 163
247aba10 164\membersection{wxFile::Detach}\label{wxfiledetach}
6be663cf 165
247aba10
VZ
166\func{void}{Detach}{\void}
167
168Get back a file descriptor from wxFile object - the caller is responsible for closing the file if this
cc81d32f 169descriptor is opened. \helpref{IsOpened()}{wxfileisopened} will return false after call to Detach().
247aba10 170
69d31301 171
247aba10 172\membersection{wxFile::fd}\label{wxfilefd}
6be663cf 173
247aba10
VZ
174\constfunc{int}{fd}{\void}
175
176Returns the file descriptor associated with the file.
177
69d31301 178
a660d684
KB
179\membersection{wxFile::Eof}\label{wxfileeof}
180
181\constfunc{bool}{Eof}{\void}
182
cc81d32f 183Returns true if the end of the file has been reached.
c53a2bb3
VZ
184
185Note that the behaviour of the file pointer based class
186\helpref{wxFFile}{wxffile} is different as \helpref{wxFFile::Eof}{wxffileeof}
cc81d32f
VS
187will return true here only if an attempt has been made to read
188{\it past} the last byte of the file, while wxFile::Eof() will return true
c53a2bb3
VZ
189even before such attempt is made if the file pointer is at the last position
190in the file.
191
192Note also that this function doesn't work on unseekable file descriptors
193(examples include pipes, terminals and sockets under Unix) and an attempt to
f6bcfd97
BP
194use it will result in an error message in such case. So, to read the entire
195file into memory, you should write a loop which uses
196\helpref{Read}{wxfileread} repeatedly and tests its return condition instead
197of using Eof() as this will not work for special files under Unix.
a660d684 198
69d31301 199
a660d684
KB
200\membersection{wxFile::Exists}\label{wxfileexists}
201
fcea31d5 202\func{static bool}{Exists}{\param{const wxString\&}{ filename}}
a660d684 203
cc81d32f 204Returns true if the given name specifies an existing regular file (not a
e694c22c 205directory or a link)
a660d684 206
69d31301 207
a660d684
KB
208\membersection{wxFile::Flush}\label{wxfileflush}
209
210\func{bool}{Flush}{\void}
211
247aba10
VZ
212Flushes the file descriptor.
213
214Note that wxFile::Flush is not implemented on some Windows compilers
215due to a missing fsync function, which reduces the usefulness of this function
216(it can still be called but it will do nothing on unsupported compilers).
a660d684 217
69d31301 218
0912690b 219\membersection{wxFile::GetKind}\label{wxfilegetfilekind}
3c70014d 220
0912690b 221\constfunc{wxFileKind}{GetKind}{\void}
3c70014d
MW
222
223Returns the type of the file. Possible return values are:
224
225\begin{verbatim}
0912690b 226enum wxFileKind
3c70014d 227{
0912690b
MW
228 wxFILE_KIND_UNKNOWN,
229 wxFILE_KIND_DISK, // a file supporting seeking to arbitrary offsets
230 wxFILE_KIND_TERMINAL, // a tty
231 wxFILE_KIND_PIPE // a pipe
3c70014d
MW
232};
233
234\end{verbatim}
235
69d31301 236
a660d684
KB
237\membersection{wxFile::IsOpened}\label{wxfileisopened}
238
239\constfunc{bool}{IsOpened}{\void}
240
cc81d32f 241Returns true if the file has been opened.
a660d684 242
69d31301 243
a660d684
KB
244\membersection{wxFile::Length}\label{wxfilelength}
245
6294ac2e 246\constfunc{wxFileOffset}{Length}{\void}
a660d684
KB
247
248Returns the length of the file.
249
69d31301 250
a660d684
KB
251\membersection{wxFile::Open}\label{wxfileopen}
252
fcea31d5 253\func{bool}{Open}{\param{const wxString\&}{ filename}, \param{wxFile::OpenMode}{ mode = wxFile::read}}
a660d684 254
cc81d32f 255Opens the file, returning true if successful.
a660d684
KB
256
257\wxheading{Parameters}
258
259\docparam{filename}{The filename.}
260
261\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}.}
262
69d31301 263
a660d684
KB
264\membersection{wxFile::Read}\label{wxfileread}
265
6294ac2e 266\func{size\_t}{Read}{\param{void*}{ buffer}, \param{size\_t}{ count}}
a660d684
KB
267
268Reads the specified number of bytes into a buffer, returning the actual number read.
269
270\wxheading{Parameters}
271
272\docparam{buffer}{A buffer to receive the data.}
273
274\docparam{count}{The number of bytes to read.}
275
276\wxheading{Return value}
277
247aba10 278The number of bytes read, or the symbol {\bf wxInvalidOffset} (-1) if there was an error.
a660d684 279
69d31301 280
a660d684
KB
281\membersection{wxFile::Seek}\label{wxfileseek}
282
6294ac2e 283\func{wxFileOffset}{Seek}{\param{wxFileOffset }{ofs}, \param{wxSeekMode }{mode = wxFromStart}}
a660d684
KB
284
285Seeks to the specified position.
286
287\wxheading{Parameters}
288
289\docparam{ofs}{Offset to seek to.}
290
842d6c94 291\docparam{mode}{One of {\bf wxFromStart}, {\bf wxFromEnd}, {\bf wxFromCurrent}.}
a660d684
KB
292
293\wxheading{Return value}
294
247aba10 295The actual offset position achieved, or wxInvalidOffset on failure.
a660d684 296
69d31301 297
a660d684
KB
298\membersection{wxFile::SeekEnd}\label{wxfileseekend}
299
6294ac2e 300\func{wxFileOffset}{SeekEnd}{\param{wxFileOffset }{ofs = 0}}
a660d684 301
69d31301
VZ
302Moves the file pointer to the specified number of bytes relative to the end of
303the file. For example, \texttt{SeekEnd($-5$)} would position the pointer $5$
304bytes before the end.
a660d684
KB
305
306\wxheading{Parameters}
307
308\docparam{ofs}{Number of bytes before the end of the file.}
309
310\wxheading{Return value}
311
247aba10 312The actual offset position achieved, or wxInvalidOffset on failure.
a660d684 313
69d31301 314
a660d684
KB
315\membersection{wxFile::Tell}\label{wxfiletell}
316
6294ac2e 317\constfunc{wxFileOffset}{Tell}{\void}
a660d684 318
247aba10 319Returns the current position or wxInvalidOffset if file is not opened or if another
f6bcfd97 320error occurred.
a660d684 321
69d31301 322
a660d684
KB
323\membersection{wxFile::Write}\label{wxfilewrite}
324
3d971ca9 325\func{size\_t}{Write}{\param{const void*}{ buffer}, \param{size\_t}{ count}}
a660d684
KB
326
327Writes the specified number of bytes from a buffer.
328
329\wxheading{Parameters}
330
331\docparam{buffer}{A buffer containing the data.}
332
333\docparam{count}{The number of bytes to write.}
334
335\wxheading{Return value}
336
f6bcfd97 337the number of bytes actually written
a660d684 338
69d31301 339
247aba10 340\membersection{wxFile::Write}\label{wxfilewrites}
6be663cf 341
5487ff0f 342\func{bool}{Write}{\param{const wxString\& }{s}, \param{const wxMBConv\&}{ conv = wxConvUTF8}}
a660d684 343
cc81d32f 344Writes the contents of the string to the file, returns true on success.
6be663cf 345
fc2171bd 346The second argument is only meaningful in Unicode build of wxWidgets when
1facd32a
VS
347{\it conv} is used to convert {\it s} to multibyte representation.
348
4f5c4ebf
VZ
349Note that this method only works with {\tt NUL}-terminated strings, if you want
350to write data with embedded {\tt NUL}s to the file you should use the other
351\helpref{Write() overload}{wxfilewrite}.
352