내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

DataWriter Class

출력 스트림에 데이터를 씁니다.

구문


public ref class DataWriter sealed : IDataWriter,
    IClosable

특성

[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]

멤버

DataWriter클래스에는 다음과 같은 형식의 멤버가 있습니다.

생성자

DataWriter클래스에는 다음과 같은 생성자가 있습니다.

생성자Description
DataWriter() Creates and initializes a new instance of the data writer.
DataWriter(IOutputStream) Creates and initializes a new instance of the data writer to an output stream.

 

메서드

The DataWriter 클래스 - 이러한 메서드가 있습니다. C#, Visual Basic 및 C++에서는 다음 위치의 메서드도 상속합니다. Object 클래스.

메서드Description
Close [C++, JavaScript]Closes the current stream and releases system resources.
DetachBuffer Detaches the buffer that is associated with the data writer.
DetachStream Detaches the stream that is associated with the data writer.
Dispose [C#, VB]Performs tasks associated with freeing, releasing, or resetting unmanaged resources.
FlushAsync Flushes data asynchronously.
MeasureString Gets the size of a string.
StoreAsync Commits data in the buffer to a backing store.
WriteBoolean Writes a Boolean value to the output stream.
WriteBuffer(IBuffer) Writes the contents of the specified buffer to the output stream.
WriteBuffer(IBuffer, UInt32, UInt32) Writes the specified bytes from a buffer to the output stream.
WriteByte Writes a byte value to the output stream.
WriteBytes Writes an array of byte values to the output stream.
WriteDateTime Writes a date and time value to the output stream.
WriteDouble Writes a floating-point value to the output stream.
WriteGuid Writes a GUID value to the output stream.
WriteInt16 Writes a 16-bit integer value to the output stream.
WriteInt32 Writes a 32-bit integer value to the output stream.
WriteInt64 Writes a 64-bit integer value to the output stream.
WriteSingle Writes a floating-point value to the output stream.
WriteString Writes a string value to the output stream.
WriteTimeSpan Writes a time-interval value to the output stream.
WriteUInt16 Writes a 16-bit unsigned integer value to the output stream.
WriteUInt32 Writes a 32-bit unsigned integer value to the output stream.
WriteUInt64 Writes a 64-bit unsigned integer value to the output stream.

 

속성

DataWriter클래스 - 이러한 속성이 있습니다.

속성사용 권한Description

ByteOrder

읽기/쓰기Gets or sets the byte order of the data in the output stream.

UnicodeEncoding

읽기/쓰기Gets or sets the Unicode character encoding for the output stream.

UnstoredBufferLength

읽기 전용Gets the size of the buffer that has not been used.

 

예제

다음 예제에서는 문자열을 메모리 내 스트림에 쓰고 읽는 방법을 보여 줍니다. 전체 코드 샘플은 데이터 샘플 읽기 및 쓰기를 참조하십시오.


#include "pch.h"
#include "WriteReadStream.xaml.h"

using namespace Concurrency;
using namespace DataReaderWriter;
using namespace Platform;
using namespace Windows::Storage::Streams;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Navigation;

Array<String^>^ _inputElements = ref new Array<String^>
{
    "Hello", "World", "1 2 3 4 5", "Très bien!", "Goodbye"
};

WriteReadStream::WriteReadStream()
{
    InitializeComponent();

    // Populate the text block with the input elements.
    ElementsToWrite->Text = "";
    for (unsigned int i = 0; i < _inputElements->Length; i++)
    {
        ElementsToWrite->Text += _inputElements[i] + ";";
    }
}

// Invoked when this page is about to be displayed in a Frame.
void WriteReadStream::OnNavigatedTo(NavigationEventArgs^ e)
{
    // Get a pointer to our main page.
    rootPage = MainPage::Current;
}

// 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.
void DataReaderWriter::WriteReadStream::TransferData(
Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    // Initialize the in-memory stream where data will be stored.
    InMemoryRandomAccessStream^ stream = ref new InMemoryRandomAccessStream();

    // Create the DataWriter object backed by the in-memory stream.  When
    // dataWriter is deleted, it will also close the underlying stream.
    DataWriter^ dataWriter = ref new DataWriter(stream);
    dataWriter->UnicodeEncoding = UnicodeEncoding::Utf8;
    dataWriter->ByteOrder = ByteOrder::LittleEndian;

    // Create the data reader by using the input stream set at position 0 so that 
    // the stream will be read from the beginning regardless of where the position
    // the original stream ends up in after the store.
    IInputStream^ inputStream = stream->GetInputStreamAt(0);
    DataReader^ dataReader = ref new DataReader(inputStream);
    // The encoding and byte order need to match the settings of the writer 
    / we previously used.
    dataReader->UnicodeEncoding = UnicodeEncoding::Utf8;
    dataReader->ByteOrder = ByteOrder::LittleEndian;

    // Write the input data to the output stream.  Serialize the elements by writing
    // each string separately, preceded by its length.
    for (unsigned int i = 0; i < _inputElements->Length; i++) 
    {
        unsigned int inputElementSize = dataWriter->MeasureString(_inputElements[i]);
        dataWriter->WriteUInt32(inputElementSize);
        dataWriter->WriteString(_inputElements[i]);
    }

    // Send the contents of the writer to the backing stream.
    create_task(dataWriter->StoreAsync()).then([this, dataWriter] (unsigned int bytesStored)
    {
        // For the in-memory stream implementation we are using, the FlushAsync() call 
        // is superfluous, but other types of streams may require it.
        return dataWriter->FlushAsync();
    }).then([this, dataReader, stream] (bool flushOp)
    {
        // Once we have written the contents successfully we load the stream.
        return dataReader->LoadAsync((unsigned int) stream->Size);
    }).then([this, dataReader] (task<unsigned int> bytesLoaded)
    {
        try
        {
            // Check for possible exceptions that could have been thrown 
            // in the async call chain.
            bytesLoaded.get();

            String^ readFromStream = "";

            // 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".
                unsigned int bytesToRead = dataReader->ReadUInt32();
                readFromStream += dataReader->ReadString(bytesToRead) + "\n";
            }

            // Populate the ElementsRead text block with the items we read from the stream
            ElementsRead->Text = readFromStream;
        }
        catch (Exception^ e)
        {
            ElementsRead->Text = "Error: " + e->Message;
        }
    });
}


요구 사항

지원되는 최소 클라이언트

Windows 8 [Windows 스토어 앱만]

지원되는 최소 서버

Windows Server 2012 [Windows 스토어 앱만]

지원되는 최소 전화

Windows Phone 8

Namespace

Windows.Storage.Streams
Windows::Storage::Streams [C++]

Metadata

Windows.winmd

참고 항목

데이터 읽기 및 쓰기 샘플
StreamSocket 샘플
DataReader
DataWriterStoreOperation

 

 

표시:
© 2015 Microsoft