]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/file.tex
added shortcut functions AddSpacer and AddStretchSpacer (plus Prepend and Insert...
[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
fc2171bd 9%% License: wxWidgets 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
KB
21
22\wxheading{Derived from}
23
24None.
25
954b8ae6
JS
26\wxheading{Include files}
27
28<wx/file.h>
29
247aba10
VZ
30\wxheading{Constants}
31
32wx/file.h defines the following constants:
6be663cf 33
247aba10
VZ
34\begin{verbatim}
35#define wxS_IRUSR 00400
36#define wxS_IWUSR 00200
37#define wxS_IXUSR 00100
38
39#define wxS_IRGRP 00040
40#define wxS_IWGRP 00020
41#define wxS_IXGRP 00010
42
43#define wxS_IROTH 00004
44#define wxS_IWOTH 00002
45#define wxS_IXOTH 00001
46
47// default mode for the new files: corresponds to umask 022
48#define wxS_DEFAULT (wxS_IRUSR | wxS_IWUSR | wxS_IRGRP | wxS_IWGRP | wxS_IROTH | wxS_IWOTH)
49\end{verbatim}
247aba10
VZ
50
51These constants define the file access rights and are used with
52\helpref{wxFile::Create}{wxfilecreate} and \helpref{wxFile::Open}{wxfileopen}.
53
54The {\it OpenMode} enumeration defines the different modes for opening a file,
f6bcfd97 55it is defined inside wxFile class so its members should be specified with {\it wxFile::} scope
6be663cf 56resolution prefix. It is also used with \helpref{wxFile::Access}{wxfileaccess} function.
247aba10 57
6be663cf
JS
58\twocolwidtha{7cm}
59\begin{twocollist}\itemsep=0pt%
247aba10
VZ
60\twocolitem{{\bf wxFile::read}}{Open file for reading or test if it can be opened for reading with Access()}
61\twocolitem{{\bf wxFile::write}}{Open file for writing deleting the contents of the file if it already exists
62or test if it can be opened for writing with Access()}
63\twocolitem{{\bf wxFile::read\_write}}{Open file for reading and writing; can not be used with Access()}
64\twocolitem{{\bf wxFile::write\_append}}{Open file for appending: the file is opened for writing, but the old
65contents of the file is not erased and the file pointer is initially placed at the end of the file;
f6bcfd97
BP
66can not be used with Access(). This is the same as {\bf wxFile::write} if the
67file doesn't exist.}
f1104df1
RL
68\twocolitem{{\bf wxFile::write\_excl}}{Open the file securely for writing (Uses O\_EXCL | O\_CREAT).
69Will 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
70\end{twocollist}
71
72Other constants defined elsewhere but used by wxFile functions are wxInvalidOffset which represents an
73invalid value of type {\it off\_t} and is returned by functions returning {\it off\_t} on error and the seek
74mode constants used with \helpref{Seek()}{wxfileseek}:
75
76\twocolwidtha{7cm}
6be663cf 77\begin{twocollist}\itemsep=0pt%
247aba10
VZ
78\twocolitem{{\bf wxFromStart}}{Count offset from the start of the file}
79\twocolitem{{\bf wxFromCurrent}}{Count offset from the current position of the file pointer}
80\twocolitem{{\bf wxFromEnd}}{Count offset from the end of the file (backwards)}
81\end{twocollist}
82
a660d684
KB
83\latexignore{\rtfignore{\wxheading{Members}}}
84
85\membersection{wxFile::wxFile}\label{wxfileconstr}
86
87\func{}{wxFile}{\void}
88
89Default constructor.
90
91\func{}{wxFile}{\param{const char*}{ filename}, \param{wxFile::OpenMode}{ mode = wxFile::read}}
92
247aba10
VZ
93Opens a file with the given mode. As there is no way to return whether the
94operation was successful or not from the constructor you should test the
95return value of \helpref{IsOpened}{wxfileisopened} to check that it didn't
96fail.
a660d684
KB
97
98\func{}{wxFile}{\param{int}{ fd}}
99
e694c22c 100Associates the file with the given file descriptor, which has already been opened.
a660d684
KB
101
102\wxheading{Parameters}
103
104\docparam{filename}{The filename.}
105
106\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}.}
107
247aba10 108\docparam{fd}{An existing file descriptor (see \helpref{Attach()}{wxfileattach} for the list of predefined descriptors)}
a660d684
KB
109
110\membersection{wxFile::\destruct{wxFile}}
111
112\func{}{\destruct{wxFile}}{\void}
113
247aba10 114Destructor will close the file.
a660d684 115
dd0fba48 116{\bf NB:} it is not virtual so you should not use wxFile polymorphically.
247aba10
VZ
117
118\membersection{wxFile::Access}\label{wxfileaccess}
6be663cf
JS
119
120\func{static bool}{Access}{\param{const char *}{ name}, \param{OpenMode}{ mode}}
a660d684 121
247aba10
VZ
122This function verifies if we may access the given file in specified mode. Only
123values of wxFile::read or wxFile::write really make sense here.
124
125\membersection{wxFile::Attach}\label{wxfileattach}
6be663cf 126
a660d684
KB
127\func{void}{Attach}{\param{int}{ fd}}
128
247aba10
VZ
129Attaches an existing file descriptor to the wxFile object. Example of predefined
130file descriptors are 0, 1 and 2 which correspond to stdin, stdout and stderr (and
28c9c76e 131have symbolic names of {\bf wxFile::fd\_stdin}, {\bf wxFile::fd\_stdout} and {\bf wxFile::fd\_stderr}).
247aba10
VZ
132
133The descriptor should be already opened and it will be closed by wxFile
134object.
a660d684
KB
135
136\membersection{wxFile::Close}\label{wxfileclose}
137
138\func{void}{Close}{\void}
139
140Closes the file.
141
142\membersection{wxFile::Create}\label{wxfilecreate}
143
cc81d32f 144\func{bool}{Create}{\param{const char*}{ filename}, \param{bool}{ overwrite = false}, \param{int }{access = wxS\_DEFAULT}}
a660d684 145
cc81d32f 146Creates a file for writing. If the file already exists, setting {\bf overwrite} to true
a660d684
KB
147will ensure it is overwritten.
148
247aba10 149\membersection{wxFile::Detach}\label{wxfiledetach}
6be663cf 150
247aba10
VZ
151\func{void}{Detach}{\void}
152
153Get back a file descriptor from wxFile object - the caller is responsible for closing the file if this
cc81d32f 154descriptor is opened. \helpref{IsOpened()}{wxfileisopened} will return false after call to Detach().
247aba10
VZ
155
156\membersection{wxFile::fd}\label{wxfilefd}
6be663cf 157
247aba10
VZ
158\constfunc{int}{fd}{\void}
159
160Returns the file descriptor associated with the file.
161
a660d684
KB
162\membersection{wxFile::Eof}\label{wxfileeof}
163
164\constfunc{bool}{Eof}{\void}
165
cc81d32f 166Returns true if the end of the file has been reached.
c53a2bb3
VZ
167
168Note that the behaviour of the file pointer based class
169\helpref{wxFFile}{wxffile} is different as \helpref{wxFFile::Eof}{wxffileeof}
cc81d32f
VS
170will return true here only if an attempt has been made to read
171{\it past} the last byte of the file, while wxFile::Eof() will return true
c53a2bb3
VZ
172even before such attempt is made if the file pointer is at the last position
173in the file.
174
175Note also that this function doesn't work on unseekable file descriptors
176(examples include pipes, terminals and sockets under Unix) and an attempt to
f6bcfd97
BP
177use it will result in an error message in such case. So, to read the entire
178file into memory, you should write a loop which uses
179\helpref{Read}{wxfileread} repeatedly and tests its return condition instead
180of using Eof() as this will not work for special files under Unix.
a660d684
KB
181
182\membersection{wxFile::Exists}\label{wxfileexists}
183
184\func{static bool}{Exists}{\param{const char*}{ filename}}
185
cc81d32f 186Returns true if the given name specifies an existing regular file (not a
e694c22c 187directory or a link)
a660d684
KB
188
189\membersection{wxFile::Flush}\label{wxfileflush}
190
191\func{bool}{Flush}{\void}
192
247aba10
VZ
193Flushes the file descriptor.
194
195Note that wxFile::Flush is not implemented on some Windows compilers
196due to a missing fsync function, which reduces the usefulness of this function
197(it can still be called but it will do nothing on unsupported compilers).
a660d684
KB
198
199\membersection{wxFile::IsOpened}\label{wxfileisopened}
200
201\constfunc{bool}{IsOpened}{\void}
202
cc81d32f 203Returns true if the file has been opened.
a660d684
KB
204
205\membersection{wxFile::Length}\label{wxfilelength}
206
207\constfunc{off\_t}{Length}{\void}
208
209Returns the length of the file.
210
211\membersection{wxFile::Open}\label{wxfileopen}
212
213\func{bool}{Open}{\param{const char*}{ filename}, \param{wxFile::OpenMode}{ mode = wxFile::read}}
214
cc81d32f 215Opens the file, returning true if successful.
a660d684
KB
216
217\wxheading{Parameters}
218
219\docparam{filename}{The filename.}
220
221\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}.}
222
223\membersection{wxFile::Read}\label{wxfileread}
224
225\func{off\_t}{Read}{\param{void*}{ buffer}, \param{off\_t}{ count}}
226
227Reads the specified number of bytes into a buffer, returning the actual number read.
228
229\wxheading{Parameters}
230
231\docparam{buffer}{A buffer to receive the data.}
232
233\docparam{count}{The number of bytes to read.}
234
235\wxheading{Return value}
236
247aba10 237The number of bytes read, or the symbol {\bf wxInvalidOffset} (-1) if there was an error.
a660d684
KB
238
239\membersection{wxFile::Seek}\label{wxfileseek}
240
842d6c94 241\func{off\_t}{Seek}{\param{off\_t }{ofs}, \param{wxSeekMode }{mode = wxFromStart}}
a660d684
KB
242
243Seeks to the specified position.
244
245\wxheading{Parameters}
246
247\docparam{ofs}{Offset to seek to.}
248
842d6c94 249\docparam{mode}{One of {\bf wxFromStart}, {\bf wxFromEnd}, {\bf wxFromCurrent}.}
a660d684
KB
250
251\wxheading{Return value}
252
247aba10 253The actual offset position achieved, or wxInvalidOffset on failure.
a660d684
KB
254
255\membersection{wxFile::SeekEnd}\label{wxfileseekend}
256
257\func{off\_t}{SeekEnd}{\param{off\_t }{ofs = 0}}
258
259Moves the file pointer to the specified number of bytes before the end of the file.
260
261\wxheading{Parameters}
262
263\docparam{ofs}{Number of bytes before the end of the file.}
264
265\wxheading{Return value}
266
247aba10 267The actual offset position achieved, or wxInvalidOffset on failure.
a660d684
KB
268
269\membersection{wxFile::Tell}\label{wxfiletell}
270
271\constfunc{off\_t}{Tell}{\void}
272
247aba10 273Returns the current position or wxInvalidOffset if file is not opened or if another
f6bcfd97 274error occurred.
a660d684
KB
275
276\membersection{wxFile::Write}\label{wxfilewrite}
277
f6bcfd97 278\func{size\_t}{Write}{\param{const void*}{ buffer}, \param{off\_t}{ count}}
a660d684
KB
279
280Writes the specified number of bytes from a buffer.
281
282\wxheading{Parameters}
283
284\docparam{buffer}{A buffer containing the data.}
285
286\docparam{count}{The number of bytes to write.}
287
288\wxheading{Return value}
289
f6bcfd97 290the number of bytes actually written
a660d684 291
247aba10 292\membersection{wxFile::Write}\label{wxfilewrites}
6be663cf 293
d3c0ce34 294\func{bool}{Write}{\param{const wxString\& }{s}, \param{wxMBConv\&}{ conv = wxConvUTF8}}
a660d684 295
cc81d32f 296Writes the contents of the string to the file, returns true on success.
6be663cf 297
fc2171bd 298The second argument is only meaningful in Unicode build of wxWidgets when
1facd32a
VS
299{\it conv} is used to convert {\it s} to multibyte representation.
300
4f5c4ebf
VZ
301Note that this method only works with {\tt NUL}-terminated strings, if you want
302to write data with embedded {\tt NUL}s to the file you should use the other
303\helpref{Write() overload}{wxfilewrite}.
304