DataReader Class
入力ストリームからデータを読み取ります。
構文
属性
- ActivatableAttribute(Windows.Storage.Streams.IDataReaderFactory, NTDDI_WIN8)
- MarshalingBehaviorAttribute(Agile)
- StaticAttribute(Windows.Storage.Streams.IDataReaderStatics, NTDDI_WIN8)
- ThreadingAttribute(Both)
- VersionAttribute(NTDDI_WIN8)
メンバー
DataReaderクラス には次の種類のメンバーが含まれます:
コンストラクター
DataReaderクラス には次のコンストラクターがあります。
| コンストラクター | 説明 |
|---|---|
| DataReader | Creates and initializes a new instance of the data reader. |
メソッド
The DataReader クラス には次のメソッドがあります。C#、Visual Basic、C++ では、次のもののメソッドも継承しますObject クラス.
| メソッド | 説明 |
|---|---|
| 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. |
プロパティ
DataReaderクラス次のプロパティがあります。
| プロパティ | アクセスの種類 | 説明 |
|---|---|---|
| 読み取り/書き込み | Gets or sets the byte order of the data in the input stream. | |
| 読み取り/書き込み | Gets or sets the read options for the input stream. | |
| 読み取り専用 | Gets the size of the buffer that has not been read. | |
| 読み取り/書き込み | Gets or sets the Unicode character encoding for the input stream. |
例
メモリ内ストリームへの文字列の書き込みおよび読み取り方法を次の例に示します。完全なコード例については、「データの読み取りと書き込みのサンプル」を参照してください。
using System; using System.Diagnostics; using Windows.Foundation; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; // This is the click handler for the 'Copy Strings' button. Here we will parse the // strings contained in the ElementsToWrite text block, write them to a stream using // DataWriter, retrieve them using DataReader, and output the results in the // ElementsRead text block. private async void TransferData(object sender, RoutedEventArgs e) { // Initialize the in-memory stream where data will be stored. using (var stream = new Windows.Storage.Streams.InMemoryRandomAccessStream()) { // Create the data writer object backed by the in-memory stream. using (var dataWriter = new Windows.Storage.Streams.DataWriter(stream)) { dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8; dataWriter.ByteOrder = Windows.Storage.Streams.ByteOrder.LittleEndian; // Parse the input stream and write each element separately. string[] inputElements = ElementsToWrite.Text.Split(';'); foreach (string inputElement in inputElements) { uint inputElementSize = dataWriter.MeasureString(inputElement); dataWriter.WriteUInt32(inputElementSize); dataWriter.WriteString(inputElement); } // Send the contents of the writer to the backing stream. await dataWriter.StoreAsync(); // For the in-memory stream implementation we are using, the flushAsync call // is superfluous,but other types of streams may require it. await dataWriter.FlushAsync(); // In order to prolong the lifetime of the stream, detach it from the // DataWriter so that it will not be closed when Dispose() is called on // dataWriter. Were we to fail to detach the stream, the call to // dataWriter.Dispose() would close the underlying stream, preventing // its subsequent use by the DataReader below. dataWriter.DetachStream(); } // Create the input stream at position 0 so that the stream can be read // from the beginning. using (var inputStream = stream.GetInputStreamAt(0)) { using (var dataReader = new Windows.Storage.Streams.DataReader(inputStream)) { // The encoding and byte order need to match the settings of the writer // we previously used. dataReader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8; dataReader.ByteOrder = Windows.Storage.Streams.ByteOrder.LittleEndian; // Once we have written the contents successfully we load the stream. await dataReader.LoadAsync((uint)stream.Size); var receivedStrings = ""; // Keep reading until we consume the complete stream. while (dataReader.UnconsumedBufferLength > 0) { // Note that the call to readString requires a length of "code units" // to read. This is the reason each string is preceded by its length // when "on the wire". uint bytesToRead = dataReader.ReadUInt32(); receivedStrings += dataReader.ReadString(bytesToRead) + "\n"; } // Populate the ElementsRead text block with the items we read // from the stream. ElementsRead.Text = receivedStrings; } } } }
要件
|
サポートされている最小のクライアント | Windows 8 [Windows ストア アプリのみ] |
|---|---|
|
サポートされている最小のサーバー | Windows Server 2012 [Windows ストア アプリのみ] |
|
サポートされている最小の電話 | Windows Phone 8 |
|
名前空間 |
|
|
メタデータ |
|
参照