HarmonyOS 鸿蒙Next 如何在创建文件/文件夹之前,判断路径是目录还是文件路径呢?

HarmonyOS 鸿蒙Next 如何在创建文件/文件夹之前,判断路径是目录还是文件路径呢? 根据传递的路径参数,判断需要创建目录还是文件?

5 回复

如果是创建前,这个文件或者目录不存在,那想要创建文件还是目录是要看自己的需求的,你给到的路径可以创建目录

let dirPath = pathDir + "/test";
fs.mkdirSync(dirPath, true);

,也可以创建文件

let file = fs.openSync(filesDir + '/test', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);

,可以封装个结构加个字段来判断,或者,你想要创建的文件有明显的标志[ex:.txt],那么你可以直接匹配末尾文件格式来判断,如果你创建的文件没有格式,那么想要创建哪个,就用哪个接口。

开源网站上收录了UI、系统接口、Web、创新特性等场景化鸿蒙示例DEMO,开发中可以参考:https://gitee.com/scenario-samples/demo-index

更多关于HarmonyOS 鸿蒙Next 如何在创建文件/文件夹之前,判断路径是目录还是文件路径呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


要根据创建前拿到的路径判断是目录还是文件,才能知道要调用fs.openSync还是fs.mkdirSync

另外,如果要根据路径末尾格式来判断,文件格式有很多,岂不是要全包含?

如果你文件都带. 你就判断有没有 . 就完了。

如果想要区分,就必须有规则啊,你总得告诉我目录和文件有啥区别吧,例如例子.txt这种,可以根据区别去做正则匹配。

没有区别的话,也没办法区分,就像我上面说的,你要创建test,我不告诉你我创建的是文件还是目录,请你人工判断,你也没法判断啊。

文件肯定是带后缀名的,就怕有些目录也带 .

所以就不好根据 . 来判断,

在HarmonyOS鸿蒙Next系统中,你可以使用文件系统API来判断一个路径是目录还是文件。具体来说,可以使用access函数配合文件属性检查。以下是一个简洁的方法:

  1. 使用access函数检查路径是否存在以及是否具有读权限。
  2. 使用stat函数获取路径的详细信息。
  3. 通过检查stat结构体中的st_mode字段来确定路径是文件还是目录。

示例代码如下:

#include <unistd.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdio.h>

int main() {
    const char *path = "/your/path/here";
    struct stat pathStat;

    if (stat(path, &pathStat) != 0) {
        perror("stat");
        return -1;
    }

    if (S_ISDIR(pathStat.st_mode)) {
        printf("%s is a directory.\n", path);
    } else if (S_ISREG(pathStat.st_mode)) {
        printf("%s is a file.\n", path);
    } else {
        printf("%s is neither a directory nor a file.\n", path);
    }

    return 0;
}

在这段代码中,S_ISDIR宏用于检查路径是否为目录,S_ISREG宏用于检查路径是否为常规文件。

请注意,以上代码示例基于POSIX标准,适用于大多数类Unix系统,包括HarmonyOS鸿蒙Next(假设其文件系统API遵循POSIX标准)。如果具体实现有所不同,请参考HarmonyOS官方文档。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部