我正在做一个Android项目,在C++
中有原生库。在代码的某个地方,我遇到了这行代码,它试图创建一个新文件:
namespace fs = boost::filesystem;
dest_path = fs::absolute(make_public(fs::temp_directory_path())) / fs::path("tmp-" + to_string(u) + "." + extension);
fs::remove(dest_path);
fs::copy_file(*doc.get_path(), dest_path);
现在boost API temp_directory_path
返回Android中/data/local/tmp
的路径。但似乎,Android应用程序不允许在此位置创建文件。是否有一种方法可以通过adb shell
授予权限在此位置创建文件/文件夹?或者是否有/data/local/tmp
目录的替代方案,因为我只需要一个临时位置,不打算长期存储这些文件,或者我如何在ndk
或通过boost
中获取应用程序的数据目录?
1条答案
按热度按时间sxpgvts31#
我的建议是在库或类的初始化期间从Java/Kotlin代码中获取目录,将
fs::temp_directory_path()
替换为从Java/Kotlin代码中获取的值。为此,我可能会使用应用程序缓存目录,通过使用
Context.getCacheDir()
。这将得到一个File
,您应该通过调用file.getAbsolutePath()
获得绝对路径(因为本机代码不使用URI,而是使用常规文件系统路径)。