4. 创建文件
任务目标
在ThreadX FileX已挂载的文件系统中,通过fx_file_create创建一个新文件,并演示文件已存在(FX_ALREADY_EXISTS)与路径无效(FX_INVALID_PATH)两类错误场景的处理。
核心实现
以下代码在FileX初始化并挂载RAM磁盘后,依次执行:创建新文件、重复创建同名文件(触发已存在错误)、在非法目录路径下创建文件(触发路径无效错误)。每个操作后通过返回状态判断结果并打印对应信息。
#include "fx_api.h"
/* 假设fx_media已经通过fx_media_open挂载,且媒体有效 */
extern FX_MEDIA fx_media;
/* 创建文件并处理错误 */
UINT demo_create_file(void)
{
UINT status;
CHAR *file_name = "test_file.txt";
CHAR *bad_path = "/nonexistent_dir/new_file.txt";
/* 1. 正常创建新文件 */
status = fx_file_create(&fx_media, file_name);
if (status != FX_SUCCESS)
{
printf("创建文件失败,状态码: 0x%02X\n", status);
return status;
}
printf("文件 %s 创建成功\n", file_name);
/* 2. 重复创建同名文件,预期返回 FX_ALREADY_EXISTS (0x07) */
status = fx_file_create(&fx_media, file_name);
if (status == FX_ALREADY_EXISTS)
{
printf("文件已存在,错误处理正确 (0x%02X)\n", status);
}
else
{
printf("预期FX_ALREADY_EXISTS,实际状态码: 0x%02X\n", status);
return status;
}
/* 3. 在无效路径下创建文件,预期返回 FX_INVALID_PATH (0x03) */
status = fx_file_create(&fx_media, bad_path);
if (status == FX_INVALID_PATH)
{
printf("路径无效,错误处理正确 (0x%02X)\n", status);
}
else
{
printf("预期FX_INVALID_PATH,实际状态码: 0x%02X\n", status);
return status;
}
return FX_SUCCESS;
}
运行与验证
环境依赖:ThreadX与FileX库已编译链接,fx_media已通过fx_media_open成功挂载(如RAM磁盘或Flash介质)。
调用方式:在应用初始化线程中调用demo_create_file(),确保FileX已通过fx_system_initialize初始化。
验证方法:
- 正常创建:观察串口输出“文件 test_file.txt 创建成功”,且返回
FX_SUCCESS。 - 重复创建:输出“文件已存在,错误处理正确 (0x07)”,证明
FX_ALREADY_EXISTS被正确捕获。 - 无效路径:输出“路径无效,错误处理正确 (0x03)”,证明
FX_INVALID_PATH被正确捕获。
通过条件:三个步骤均打印预期信息且函数最终返回FX_SUCCESS,即验证通过。若某步返回非预期状态码,则检查介质挂载路径与文件系统格式是否正确。
关键说明
FileX中fx_file_create的路径参数仅支持当前目录下的文件名,不支持多级目录路径。因此示例中"/nonexistent_dir/new_file.txt"会触发FX_INVALID_PATH。若需在子目录创建文件,应先用fx_directory_create创建目录并切换当前工作目录(fx_directory_change),再调用本函数。