Added doc with IO functions
Minor spelling and editorial issues see remarks J.Pasion 30 Oct. Corrected syllabifying error and minor punctuation issue Added link to Qt Core in introduction Change-Id: I1516c94c7f9b70125801ab7f9dfeeaed94db6d91 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Geir Vattekar <geir.vattekar@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
This commit is contained in:
parent
cb09767744
commit
a769a212e0
109
src/corelib/doc/src/filestorage.qdoc
Normal file
109
src/corelib/doc/src/filestorage.qdoc
Normal file
@ -0,0 +1,109 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:FDL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Free Documentation License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Free
|
||||
** Documentation License version 1.3 as published by the Free Software
|
||||
** Foundation and appearing in the file included in the packaging of
|
||||
** this file. Please review the following information to ensure
|
||||
** the GNU Free Documentation License version 1.3 requirements
|
||||
** will be met: http://www.gnu.org/copyleft/fdl.html.
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
\page io-functions.html
|
||||
\title File and Datastream Functions
|
||||
|
||||
The QIODevice class is the base interface class of all I/O devices in
|
||||
\l {Qt Core}. QIODevice provides both a common implementation and an
|
||||
abstract interface for devices that support reading and writing of blocks
|
||||
of data. The device can be a memory buffer, a file, or a datastream.
|
||||
|
||||
Some subclasses like QFile have been implemented using a memory buffer for
|
||||
intermediate storing of data. This speeds up programs by reducing
|
||||
read/write operations. Buffering makes functions like getChar() and putChar()
|
||||
fast, as they can operate on the memory buffer instead of directly on the
|
||||
device itself.
|
||||
|
||||
The QFile class provides functions for reading from and writing to files.
|
||||
A QFile may be used by itself or, more conveniently, with a QTextStream or
|
||||
QDataStream.
|
||||
|
||||
QBuffer allows you to access a QByteArray using the QIODevice interface.
|
||||
The QByteArray is treated just as a standard random-accessed file.
|
||||
An example:
|
||||
|
||||
QBuffer buffer;
|
||||
char ch;
|
||||
|
||||
buffer.open(QBuffer::ReadWrite);
|
||||
buffer.write("Qt rocks!");
|
||||
buffer.seek(0);
|
||||
buffer.getChar(&ch); // ch == 'Q'
|
||||
buffer.getChar(&ch); // ch == 't'
|
||||
buffer.getChar(&ch); // ch == ' '
|
||||
buffer.getChar(&ch); // ch == 'r'
|
||||
|
||||
Call open() to open the buffer. Then call write() or putChar() to write to
|
||||
the buffer, and read(), readLine(), readAll(), or getChar() to read from it.
|
||||
size() returns the current size of the buffer, and you can seek to arbitrary
|
||||
positions in the buffer by calling seek(). When you are done with accessing
|
||||
the buffer, call close().
|
||||
|
||||
The QDataStream class provides serialization of binary data to a QIODevice.
|
||||
A data stream is a binary stream of encoded information which is 100% inde-
|
||||
pendent of the host computer's operating system, CPU or byte order. For
|
||||
example, a data stream that is written by a PC under Windows can be read
|
||||
by a Sun SPARC running Solaris. You can also use a data stream to read/write
|
||||
raw unencoded binary data.
|
||||
|
||||
For more details on the datatypes that QDataStream can serialize, see
|
||||
{Serializing Qt Data Types}.
|
||||
|
||||
The QTextStream class provides a convenient interface for reading and
|
||||
writing text. QTextStream can operate on a QIODevice, a QByteArray or
|
||||
a QString. Using QTextStream's streaming operators, you can conveniently read
|
||||
and write words, lines and numbers. It's also common to use QTextStream to
|
||||
read console input and write console output.
|
||||
|
||||
There are three general ways to use QTextStream when reading text files:
|
||||
|
||||
\list
|
||||
\li Chunk by chunk, by calling readLine() or readAll().
|
||||
\li Word by word. QTextStream supports streaming into QStrings, QByteArrays
|
||||
and char* buffers. Words are delimited by space, and leading white space
|
||||
is automatically skipped.
|
||||
\li Character by character, by streaming into QChar or char types. This
|
||||
method is often used for convenient input handling when parsing files,
|
||||
independent of character encoding and end-of-line semantics. To skip
|
||||
white space, call skipWhiteSpace().
|
||||
\endlist
|
||||
|
||||
QByteArray can be used to store both raw bytes (including \c{\0}) and traditional
|
||||
8-bit '\\0'-terminated strings. Using QByteArray is much more convenient
|
||||
than using const char *. It always ensures that the data is followed by a '\\0'
|
||||
terminator, and uses \l{Implicit Sharing}{implicitly shared classes} (copy-on-write)
|
||||
to reduce memory usage and avoid needless copying of data.
|
||||
|
||||
In addition to QByteArray, Qt also provides the QString class to store string
|
||||
data. For most purposes, QString is the most appropriate class to use. It stores
|
||||
16-bit Unicode characters. It is, however, a good idea to use QByteArray when you
|
||||
need to store raw binary data, and when memory conservation is critical (for
|
||||
example, with Qt for Embedded Linux).
|
||||
|
||||
*/
|
Loading…
Reference in New Issue
Block a user