-
Notifications
You must be signed in to change notification settings - Fork 1
MPP_FileTools
SweerItTer edited this page Feb 1, 2026
·
3 revisions
FileTools 是 utilsCore MPP 模块的工具函数集合,提供文件和目录相关的工具函数。
- 检查目录是否存在
- 文件路径验证
- 目录检查
- 文件系统操作
- 依赖: sys/stat.h
- 被依赖: JpegEncoder 等模块
inline bool dirExists(const std::string& path);参数说明:
-
path(输入): 目录路径
返回值:
-
true: 目录存在 -
false: 目录不存在或发生错误
所有权归属:
- 无所有权转移
注意事项:
- 使用 stat() 函数检查路径状态
- 只检查目录,不检查文件
- 路径不存在时返回 false
使用例程:
// 检查目录是否存在
if (dirExists("/tmp/jpeg")) {
printf("Directory exists\n");
} else {
printf("Directory does not exist\n");
}
// 在保存文件前检查目录
std::string save_dir = "/tmp/jpeg";
if (!dirExists(save_dir)) {
// 创建目录
mkdir(save_dir.c_str(), 0755);
}struct stat st;
if (0 != stat(path.c_str(), &st)) {
return false;
}
return S_ISDIR(st.st_mode);说明:
- 使用 stat() 获取路径状态
- stat() 失败(返回非零)时返回 false
- 使用 S_ISDIR() 检查是否为目录
JpegEncoder::Config cfg;
cfg.save_dir = "/tmp/jpeg";
// 检查目录是否存在
if (!dirExists(cfg.save_dir)) {
// 创建目录
mkdir(cfg.save_dir.c_str(), 0755);
}
JpegEncoder encoder(cfg);std::string output_dir = get_output_dir();
if (dirExists(output_dir)) {
printf("Directory already exists\n");
} else {
printf("Creating directory...\n");
mkdir(output_dir.c_str(), 0755);
}std::vector<std::string> dirs = {
"/tmp/jpeg",
"/tmp/video",
"/tmp/data"
};
for (const auto& dir : dirs) {
if (!dirExists(dir)) {
printf("Directory %s does not exist\n", dir.c_str());
// 创建目录
mkdir(dir.c_str(), 0755);
}
}- 仅检查目录: 只检查目录,不检查文件
- 路径权限: 需要有访问路径的权限
- 路径格式: 使用绝对路径或相对路径
- stat() 失败: stat() 失败时返回 false(包括路径不存在)
- 线程安全: 函数是线程安全的
- 性能: 每次调用都会执行 stat() 系统调用
- JpegEncoder - JPEG 编码器
- StreamWriter - 流写入器
- MPP 模块总览
主页
API 文档
DMA 模块
DRM 模块
- DRM 模块总览
- DeviceController - DRM 设备控制器
- DrmLayer - DRM 图层管理
- PlanesCompositor - DRM 平面合成器
- DrmBpp - DRM 格式定义
NET 模块
- NET 模块总览
- TcpServer - TCP 服务器
- SocketConnection - Socket 连接管理
- CommandHandler - 命令处理器
- DataPacket - 数据包
V4L2 模块
- V4L2 模块总览
- CameraController - V4L2 摄像头控制器
- Frame - V4L2 帧数据结构
- FormatTool - V4L2 格式工具
- Exception - V4L2 异常类
V4L2Param 模块
- V4L2Param 模块总览
- ParamControl - 参数控制
- ParamLogger - 参数日志
- ParamProcessor - 参数处理器
RGA 模块
- RGA 模块总览
- RgaConverter - RGA 转换器
- RgaProcessor - RGA 处理器
- FormatTool - RGA 格式工具
MPP 模块
- MPP 模块总览
- EncoderContext - 编码器上下文
- EncoderCore - 编码器核心
- JpegEncoder - JPEG 编码器
- StreamWriter - 流写入器
- MppResourceGuard - MPP 资源守护
- FileTools - 文件工具
- FormatTool - 格式工具
Sys 模块
- Sys 模块总览
- CpuMonitor - CPU 监控器
- MemoryMonitor - 内存监控器
- Base - 基础类
Mouse 模块
- Mouse 模块总览
- Watcher - 鼠标监视器
Utils 模块
- Utils 模块总览
- AsyncThreadPool - 异步线程池
- ConcurrentQueue - 并发队列
- FdWrapper - 文件描述符包装器
- FenceWatcher - 围栏监视器
- FixedSizePool - 固定大小对象池
- Logger - 日志记录器
- ObjectsPool - 对象池
- OrderedQueue - 有序队列
- ProgressBar - 进度条
- SafeQueue - 安全队列
- SharedBufferState - 共享缓冲区状态
- SimpleVariant - 简单变体类型
- ThreadPauser - 线程暂停器
- ThreadUtils - 线程工具
- Types - 类型定义
- UdevMonitor - Udev 监视器