The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.
DataReader class
Reads data from an input stream.
Syntax
var dataReader = new Windows.Storage.Streams.DataReader();
Attributes
- [MarshalingBehavior(Agile)]
- [Threading(Both)]
- [Version(0x06020000)]
Members
The DataReader class has these types of members:
Constructors
The DataReader class has these constructors.
Constructor | Description |
---|---|
DataReader | Creates and initializes a new instance of the data reader. |
Methods
The DataReader class has these methods. With C#, Visual Basic, and C++, it also inherits methods from the Object class.
Method | Description |
---|---|
Close [C++, JavaScript] | Closes the current stream and releases system resources. |
DetachBuffer | Detaches the buffer that is associated with the data reader. |
DetachStream | Detaches the stream that is associated with the data reader. |
Dispose [C#, VB] | Performs tasks associated with freeing, releasing, or resetting unmanaged resources. |
FromBuffer | Creates a new instance of the data reader with data from the specified buffer. |
LoadAsync | Loads data from the input stream. |
ReadBoolean | Reads a Boolean value from the input stream. |
ReadBuffer | Reads a buffer from the input stream. |
ReadByte | Reads a byte value from the input stream. |
ReadBytes | Reads an array of byte values from the input stream. |
ReadDateTime | Reads a date and time value from the input stream. |
ReadDouble | Reads a floating-point value from the input stream. |
ReadGuid | Reads a GUID value from the input stream. |
ReadInt16 | Reads a 16-bit integer value from the input stream. |
ReadInt32 | Reads a 32-bit integer value from the input stream. |
ReadInt64 | Reads a 64-bit integer value from the input stream. |
ReadSingle | Reads a floating-point value from the input stream. |
ReadString | Reads a string value from the input stream. |
ReadTimeSpan | Reads a time-interval value from the input stream. |
ReadUInt16 | Reads a 16-bit unsigned integer from the input stream. |
ReadUInt32 | Reads a 32-bit unsigned integer from the input stream. |
ReadUInt64 | Reads a 64-bit unsigned integer from the input stream. |
Properties
The DataReader class has these properties.
Property | Access type | Description |
---|---|---|
Read/write | Gets or sets the byte order of the data in the input stream. | |
Read/write | Gets or sets the read options for the input stream. | |
Read-only | Gets the size of the buffer that has not been read. | |
Read/write | Gets or sets the Unicode character encoding for the input stream. |
Examples
The following example shows how to write and read strings to an in-memory stream. For the full code sample, see Reading and writing data sample.
(function () { "use strict"; var page = WinJS.UI.Pages.define("/html/write-read-stream.html", { ready: function (element, options) { var sourceElement = document.getElementById("ElementsToSend"); sourceElement.innerHTML = "Hello;World;1 2 3 4 5;Très bien!;Goodbye"; var sendButton = document.getElementById("SendButton"); sendButton.addEventListener("click", transferData); } }); function transferData() { var sourceElement = document.getElementById("ElementsToSend"); var destinationElement = document.getElementById("scenario1Output"); // First a DataWriter object is created, backed by an in-memory stream where // the data will be stored. var writer = Windows.Storage.Streams.DataWriter( new Windows.Storage.Streams.InMemoryRandomAccessStream()); writer.unicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.utf8; writer.byteOrder = Windows.Storage.Streams.ByteOrder.littleEndian; // We separate the contents of the sourceElement div in multiple strings // using ';' as the separator. Each string will be written separately. var elements = sourceElement.innerHTML.split(";"); elements.forEach(function (element) { var codeUnits = writer.measureString(element); writer.writeInt32(codeUnits); writer.writeString(element); }); var reader; var stream; // The call to store async sends the actual contents of the writer // to the backing stream. writer.storeAsync().then(function () { // For the in-memory stream implementation we are using, the flushAsync call // is superfluous, but other types of streams may require it. return writer.flushAsync(); }).then(function () { // We detach the stream to prolong its useful lifetime. Were we to fail // to detach the stream, the call to writer.close() would close the underlying // stream, preventing its subsequent use by the DataReader below. Most clients // of DataWriter will have no reason to use the underlying stream after // writer.close() is called, and will therefore have no reason to call // writer.detachStream(). Note that once we detach the stream, we assume // responsibility for closing the stream subsequently; after the stream // has been detached, a call to writer.close() will have no effect on the stream. stream = writer.detachStream(); // Make sure the stream is read from the beginning in the reader // we are creating below. stream.seek(0); // Most DataWriter clients will not call writer.detachStream(), // and furthermore will be working with a file-backed or network-backed stream, // rather than an in-memory-stream. In such cases, it would be particularly // important to call writer.close(). Doing so is always a best practice. writer.close(); reader = new Windows.Storage.Streams.DataReader(stream); // The encoding and byte order need to match the settings of the writer // we previously used. reader.unicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.utf8; reader.byteOrder = Windows.Storage.Streams.ByteOrder.littleEndian; // Once we have written the contents successfully we load the stream, // this is also an asynchronous operation return reader.loadAsync(stream.size); }).done(function () { var receivedStrings = ""; // Keep reading until we consume the complete stream while (reader.unconsumedBufferLength > 0) { // Note that the call to readString requires a length of "code units" // to read. This is the reason each string is preceeded by its length // when "on the wire". var codeUnitsToRead = reader.readInt32(); receivedStrings += reader.readString(codeUnitsToRead) + "<br/>"; } // Calling reader.close() closes the underlying stream. It would be particularly important // to call reader.close() if the underlying stream were file-backed or // network-backed. Note that this call to reader.close() satisfies // our obligation to close the stream previously detached from DataReader. reader.close(); destinationElement.innerHTML = receivedStrings; }); }; })();
Requirements
Minimum supported client | Windows 8 [Windows Store apps only] |
---|---|
Minimum supported server | Windows Server 2012 [Windows Store apps only] |
Minimum supported phone | Windows Phone 8 |
Namespace |
|
Metadata |
|
See also
Show: