0
我想从我的资产文件夹打开一个XML文件,但不幸的是,我只能通过使用FileOpenPicker打开我的XML文件,这不是最理想的情况,当我必须不断获取我的XML文件,当然不会打扰用户。C++/CX - GetFileAsync抛出断点错误
FileOpenPicker^ openPicker = ref new FileOpenPicker();
openPicker->ViewMode = PickerViewMode::List;
openPicker->SuggestedStartLocation = PickerLocationId::Desktop;
openPicker->FileTypeFilter->Append(".xml");
task<StorageFile^>(
openPicker->PickSingleFileAsync()).then([this](StorageFile^ file) {
if (nullptr != file) {
task<Streams::IRandomAccessStream^>(file->OpenAsync(FileAccessMode::Read)).then([this](Streams::IRandomAccessStream^ stream)
{
IInputStream^ deInputStream = stream->GetInputStreamAt(0);
DataReader^ reader = ref new DataReader(deInputStream);
reader->LoadAsync(stream->Size);
String^ strXml = reader->ReadString(stream->Size);
});
}
});
我现在正在尝试将此代码重新构建到加载我的xml文件而不让用户选择的代码中。我尝试以下方法:
String^ xmlFile = "Assets\MyXmlFile.xml";
StorageFolder^ InstallationFolder = Windows::ApplicationModel::Package::Current->InstalledLocation;
task<StorageFile^>(
InstallationFolder->GetFileAsync(xmlFile)).then([this](StorageFile^ file) {
if (nullptr != file) {
task<Streams::IRandomAccessStream^>(file->OpenAsync(FileAccessMode::Read)).then([this](Streams::IRandomAccessStream^ stream)
{
IInputStream^ deInputStream = stream->GetInputStreamAt(0);
DataReader^ reader = ref new DataReader(deInputStream);
reader->LoadAsync(stream->Size);
String^ strXml = reader->ReadString(stream->Size);
stream->FlushAsync();
});
}
});
我觉得我得到的GetFileAsync对此我没有能够解决的错误,我问你,社区,试图帮助我。
谢谢你的工作。它加载数据,但是当我多次启动该方法时,出现错误。它表示如下:**操作尝试访问超出有效范围的数据**在位置触发:'String^strXml = reader-> ReadString(stream-> Size);' – Napokue