HarmonyOS 鸿蒙Next对于分享文件至目标应用时音视频等文件无法通过fs\.statSync\(file\.path\)\.size获取文件大小如何解决

HarmonyOS 鸿蒙Next对于分享文件至目标应用时音视频等文件无法通过fs.statSync(file.path).size获取文件大小如何解决

外部的一些文件分享至目标应用,分享时fs.statSync(file.path).size只能获取PDF,TXT等文件大小,但是音视频获取不到,求解

(record.uri && record.utd == "general.mpeg-4" || record.uri && record.utd == "general.audio" ||
  record.uri && record.title) {
  let uri: string = record.uri
  let file = fs.openSync(uri, fs.OpenMode.READ_ONLY);
  let typeObj = uniformTypeDescriptor.getTypeDescriptor(record.utd)
  let fileSize: number
  if (record.utd == "general.mpeg-4" || record.utd == "general.audio") {
    //音视频,fs.statSync(file.path).size无法获取大小
    fileSize = 0                          
  } else {
    //其他文件,pdf/txt等可以获取大小
    fileSize = fs.statSync(file.path).size
  }
}

更多关于HarmonyOS 鸿蒙Next对于分享文件至目标应用时音视频等文件无法通过fs\.statSync\(file\.path\)\.size获取文件大小如何解决的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

使用statSync

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

try {
  let file = fs.openSync(file.path, fs.OpenMode.READ_ONLY); // 打开文件
  let stat = fs.statSync(file.fd); // 使用文件描述符获取文件信息
  console.info("File size: " + stat.size); // 获取文件大小
  fs.closeSync(file.fd); // 关闭文件描述符
} catch (err) {
  console.error("Failed to get file size: " + err.message);
}

或者start

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

fs.stat(file.path, (err, stat) => {
  if (err) {
    console.error("Failed to get file size: " + err.message);
  } else {
    console.info("File size: " + stat.size);
  }
});

更多关于HarmonyOS 鸿蒙Next对于分享文件至目标应用时音视频等文件无法通过fs\.statSync\(file\.path\)\.size获取文件大小如何解决的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


13900002 没有这个文件或目录
错误信息
No such file or directory

我用相同的方式,当我分享过来的文件时txt,pdf时,路径能获取到,文件大小也能点出来。
但是分享音视频,file.path也有值,但在执行stat(file.path)时却又报上述错误。

测试没问题了,得用 fs.statSync(file.fd); 才能获取到全部类型文件的大小,谢谢!

在HarmonyOS鸿蒙Next中,若无法通过fs.statSync(file.path).size获取音视频等文件的大小,可以尝试使用fileio模块的stat方法来获取文件信息。具体代码如下:

import fileio from '@ohos.fileio';

let filePath = 'your_file_path';
try {
    let stat = fileio.statSync(filePath);
    let fileSize = stat.size;
    console.log(`File size: ${fileSize}`);
} catch (err) {
    console.error(`Failed to get file size: ${err.message}`);
}

此方法通过fileio.statSync获取文件状态信息,并从中提取文件大小。确保文件路径正确,并处理可能的异常情况。

回到顶部