String^与InMemoryRandomAccessStream,IBuffer与DataReader,DataReader之间的转化关系

IBuffer^ Scenario3::GetBufferFromString(String^ str)
{
    InMemoryRandomAccessStream^ memoryStream = ref new InMemoryRandomAccessStream();
    DataWriter^ dataWriter = ref new DataWriter(memoryStream);
    dataWriter->WriteString(str);
    return dataWriter->DetachBuffer();
}

void Scenario3::ReadBytesButton_Click(Object^ sender, RoutedEventArgs^ e)
{
    StorageFile^ file = rootPage->SampleFile;
    if (file != nullptr)
    {
        create_task(FileIO::ReadBufferAsync(file)).then([this, file](IBuffer^ buffer)
        {
            DataReader^ dataReader = DataReader::FromBuffer(buffer);
            String^ fileContent = dataReader->ReadString(buffer->Length);
            OutputTextBlock->Text = "The following " + buffer->Length.ToString() + " bytes of text were read from '" + file->Name + "':\n\n" + fileContent;
        });
    }
}
posted @ 2012-07-04 17:18  狼哥2  阅读(838)  评论(0编辑  收藏  举报