1

我正在开发一个具有一些本机代码(运行时组件)的 WP8 应用程序。在运行时组件中,我需要检查 ac 样式数组的内容。因为这个数组并不小,我认为我能做的最好的就是使用 fopen/fwrite/fclose 将数组写入一个文件;检查 fopen 和 fwrite 的返回值,我可以看到它成功了。但我找不到该文件(使用 Windows Phone Power Tools)。

那么文件写在哪里了?是否有另一种方法可以将数组的内容从 Visual Studio 转储到文件(在计算机上)?

4

2 回答 2

1

我不熟悉 WP8 中的 fopen/fwrite/fclose API。这可能意味着它不是您可以用来提交应用程序的白名单 API。在 C++ 中使用 IsoStore 时,最好只使用“Windows::Storage::ApplicationData::Current->LocalFolder”。请参阅 Win8 代码示例 @ http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh700361.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1

于 2013-01-13T23:07:41.473 回答
1

谢谢贾斯汀,

这就是我最终这样做的方式:

auto folder = Windows::Storage::ApplicationData::Current->LocalFolder;
Concurrency::task<Windows::Storage::StorageFile^> createFileOp(
    folder->CreateFileAsync(L"Data.bin", Windows::Storage::CreationCollisionOption::ReplaceExisting));

createFileOp.then(
    [nData, pData](Windows::Storage::StorageFile^ file)
    {
        return file->OpenAsync(Windows::Storage::FileAccessMode::ReadWrite);
    })
    .then([nData, pData](Windows::Storage::Streams::IRandomAccessStream^ stream)
        {
            auto buffer = ref new Platform::Array<BYTE>(pData, nData);

            auto outputStream = stream->GetOutputStreamAt(0);
            auto dataWriter = ref new Windows::Storage::Streams::DataWriter(outputStream);                        
            dataWriter->WriteBytes(buffer);

            return dataWriter->StoreAsync();
        })
   .wait();

现在将其与我的“意思”进行比较:

FILE *fp = fopen("Data.bin", "wb");
if (fp)
{
    int ret = fwrite(pData, 1, nData, fp);
    fclose(fp);
}
于 2013-01-14T20:46:04.997 回答