主题
文件读写
如果你熟悉标准C语言的文件读写,可以按照标准C语言的方式读写文件。
或者使用base-utility依赖包中提供的函数。
在项目下的Manifest.xml中,添加依赖包 base-utility
c++
#include <base/base.h>写文件
c++
//将“0123456789”这个字符串写入到123.txt这个文件中,如果文件已存在,则覆盖
const char* filename = "/mnt/extsd/123.txt"; //文件保存的路径
const char* str = "0123456789";
base::writeFile(filename, str);
base::writeFile(filename, str, strlen(str));
sync(); //写文件结束后调用该函数,确保写入完整。追加文件
c++
const char* filename = "/mnt/extsd/123.txt";
base::appendFile(filename, "abcd", 4);
base::appendFile(filename, "abcd");
sync(); //写文件结束后调用该函数,确保写入完整。读文件
c++
const char* filename = "/mnt/extsd/123.txt";
//读取文件的所有内容,保存在content中
std::string content = base::readFile(filename);
//将读到的每一个字节以16进制输出到日志
for (size_t i = 0 ; i < content.size(); ++i) {
LOGD("第%02d字节=0x%02X", i, content.data()[i]);
}警告
base::readFile函数将读取文件的所有内容到内存中,如果文件过大,内存可能不足,会造成异常。
更多的操作
c++
void testReadWriteFile() {
const char* path = "/tmp/abc.txt";
if (!base::removeFile(path)) {
throwException(-1, "删除失败");
}
if (!base::writeFile(path, "123456", 6)) {
throwException(-1, "写文件失败");
}
auto content = base::readFile(path);
if (content != "123456") {
throwException(-1, "读写文件失败");
}
if (!base::appendFile(path, "789", 3)) {
throwException(-1, "追加文件失败");
}
content = base::readFile(path);
if (content != "123456789") {
throwException(-1, "读文件失败");
}
if (!base::removeFile(path)) {
throwException(-1, "删除失败");
}
LOGI_TRACE("测试完成");
}