1

根据Supported Win32 APIs for Windows Phone 8,WP8 确实支持许多文件操作 API,fileapi.h如 CreateFile2、ReadFile、WriteFile 等。

但是当我包含时,<stdio.h>我可以使用 fopen、fread、fwrite,...

使用这两个 API,我可以创建和读取/写入文本文件。

CreateFile2("hello.txt", ...);
fopen("hello.txt", ...);

... 表示其他参数,这对这个问题并不重要

另一件事是我不知道该文本文件所在的位置。安装位置并非如此,因为它是只读位置。另一种情况是本地文件夹,但我没有指定任何本地文件夹路径。

fileapi.h那么这些 API(在和中stdio.h)以及它们作用于哪个位置之间有什么区别?

P/S:我在 WP 运行时组件中做

4

1 回答 1

0

主要区别在于这些函数使用的 API 集。

<stdio.h>包含标准 C 库的文件 API,<fileapi.h>是 Win32 API。<iostream>您还可以使用C++ API ( )。

我发现无论您使用什么 API,您都应该将文件位置显式设置为 Local 文件夹。

Platform::String^ localfolder = Windows::Storage::ApplicationData::Current->LocalFolder->Path;
Platform::String^ myFileName = Platform::String::Concat(localfolder, "\\myfile.txt");

需要注意的一件事是Platform::String^使用 wchar_t,而不是char内部使用,因此您在指定文件名时需要小心。

因此,尝试找到一个获取wchar_t*文件名的 API,并使用它来避免进行字符集转换。

例如:使用_wfsopen而不是fopen.

于 2013-07-04T12:09:56.890 回答