鸿蒙Next如何获取路径中的文件名

在鸿蒙Next开发中,如何从文件路径中提取文件名?例如给定路径"/storage/emulated/0/Download/test.txt",需要获取最后的"test.txt"部分,是否有现成的API或方法可以实现?求具体代码示例。

2 回复

鸿蒙Next里获取文件名?简单!
ohos.file.fs 里的 getName() 方法,路径一塞,文件名就蹦出来了。
代码示例:

import fs from '@ohos.file.fs';  
let file = fs.openSync("路径/文件.txt");  
let fileName = file.getName(); // "文件.txt"到手!  

别让路径溜了,抓住文件名就是现在! 😄

更多关于鸿蒙Next如何获取路径中的文件名的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,可以通过以下方式获取文件路径中的文件名:

方法一:使用 ohos.file.fs 文件系统 API

import fs from '@ohos.file.fs';

let filePath: string = "/data/storage/el2/base/files/example.txt";

// 使用 fs.basename() 获取文件名
let fileName: string = fs.basename(filePath);
console.log("文件名:", fileName); // 输出: example.txt

方法二:手动处理路径字符串

let filePath: string = "/data/storage/el2/base/files/example.txt";

// 使用 split 分割路径并取最后一部分
let pathArray: string[] = filePath.split('/');
let fileName: string = pathArray[pathArray.length - 1];
console.log("文件名:", fileName); // 输出: example.txt

// 或者使用 lastIndexOf 查找最后一个斜杠
let lastSlashIndex: number = filePath.lastIndexOf('/');
let fileName2: string = filePath.substring(lastSlashIndex + 1);
console.log("文件名:", fileName2); // 输出: example.txt

说明:

  1. 推荐使用方法一fs.basename() 是官方提供的标准方法,能正确处理不同操作系统路径分隔符。
  2. 如果路径以目录结尾(如 /path/to/directory/),fs.basename() 会返回空字符串,建议先确保路径指向文件。
  3. 方法二适用于简单场景,但需要注意路径分隔符的兼容性。

完整示例:

import fs from '@ohos.file.fs';

function getFileName(filePath: string): string {
  try {
    return fs.basename(filePath);
  } catch (error) {
    console.error("获取文件名失败:", error);
    return "";
  }
}

// 使用示例
let filePath = "/data/storage/el2/base/files/document.pdf";
let name = getFileName(filePath);
console.log("文件名:", name); // 输出: document.pdf

选择哪种方式取决于具体需求,推荐优先使用 fs.basename() 方法。

回到顶部