为了写入 sdcard 上的文件在 AndroidManifest.xml 中添加 android.permission.WRITE_EXTERNAL_STORAGE。需要添加/做什么来保留设备内存(闪存/应用程序文件夹)的记录?
写函数:
bool write_to_file(const std::string & file_name, const std::string & text)
{
bool res = false;
std::ofstream stream (file_name.c_str (), std::ios::out);
stream.clear();
if (! stream.fail()) {
res = true;
stream << text.c_str() << std::endl;
}
else {
LOGE ("std :: ofstream: wtire error");
}
stream.close();
return res;
}
调用示例
std::string file("/sdcard/text.txt");
write_to_file(file, "simple text"); // OK !!!
std::string file("./text.txt");
write_to_file(file, "simple text"); // ERROR !!!
最佳答案
诀窍是将正确的文件名传递给 native 代码。在 Android 中,您使用 Context.getDir()
检索手机内存中的数据文件夹位置。像这样:
File Path = Ctxt.getDir("Data");
File FName = new File(Path, "MyFile.txt");
然后以某种方式将 FName.toString()
传递到 native 库中。粘贴的 fragment 不能直接从 Java 调用 - glue code丢失了。
在我所知道的 Android 版本中,上面的文件路径对应于以下文件系统路径:/data/data/com.mypackage/app_Data/MyFile.txt
。但你不能依赖它。
操作系统权限禁止写入设备文件系统的任意路径。你有你的沙盒,去玩吧。这就是智能手机的方式。
关于android - Android 中的 C++ 流。如何使用 std::ofstream 写入设备内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105675/