HarmonyOS 鸿蒙Next调起文件管理器选择文件或图片后如何获取文件的大小

HarmonyOS 鸿蒙Next调起文件管理器选择文件或图片后如何获取文件的大小

获取到的路径是 file://docs/storage/Users/currentUser/tesst/1.jpg

let file = fileIo.openSync(path, fileIo.OpenMode.READ_ONLY);
let buffer = new ArrayBuffer(4096);
let readLen = fileIo.readSync(file.fd, buffer);
fileIo.closeSync(file);

上面这个方法读出来是4096kb


更多关于HarmonyOS 鸿蒙Next调起文件管理器选择文件或图片后如何获取文件的大小的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

将文件复制到沙箱目录里面,然后就可以读取其大小。

import fs from '@ohos.file.fs';
export class test{
  private copySandBoxFileToPub(): void {
    let sanFile: fs.File = null!;
    let pubFile: fs.File = null!;
    let originUploadPath = 'file://docs/storage/Users/currentUser/Documents/temp/testPdf.pdf'
    let targetUploadPath = getContext(this).cacheDir + '/test.pdf';

    sanFile = fs.openSync(originUploadPath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    pubFile = fs.openSync(targetUploadPath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);

    fs.copyFileSync(sanFile.fd, pubFile.fd);

    // 文件大小:
    console.log("fs.statSync(targetUploadPath).size" + fs.statSync(targetUploadPath).size.toString())
  }
}

更多关于HarmonyOS 鸿蒙Next调起文件管理器选择文件或图片后如何获取文件的大小的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,调起文件管理器选择文件或图片后,可以通过AbilityFile模块获取文件的大小。具体步骤如下:

  1. 调起文件管理器:使用startAbilityForResult方法调起文件管理器,允许用户选择文件或图片。

  2. 获取文件URI:在onAbilityResult回调中,通过Intent获取用户选择的文件URI。

  3. 获取文件大小:使用File模块的File类,通过getFileSize方法获取文件的大小。

示例代码如下:

import featureAbility from '@ohos.ability.featureAbility';
import file from '@ohos.file';

// 调起文件管理器
let intent = {
    action: "ohos.intent.action.PICK",
    parameters: {
        "ohos.intent.extra.PICKED_FILE": true
    }
};
featureAbility.startAbilityForResult(intent)
    .then(data => {
        if (data.resultCode === 0) {
            let uri = data.want.uri;
            getFileSize(uri);
        }
    })
    .catch(error => {
        console.error(`Failed to start ability: ${error}`);
    });

// 获取文件大小
function getFileSize(uri) {
    file.File.open(uri, file.OpenMode.READ_ONLY)
        .then(fileObj => {
            let size = fileObj.getFileSize();
            console.log(`File size: ${size} bytes`);
            fileObj.close();
        })
        .catch(error => {
            console.error(`Failed to get file size: ${error}`);
        });
}

在上述代码中,getFileSize函数通过File类的getFileSize方法获取文件的大小,并输出到控制台。

回到顶部