文件管理

支持设备

手机 平板 智慧屏 智能穿戴
支持 不支持 不支持 支持

导入模块

import fileio from '@ohos.fileio'

权限列表

openSync(path:string, flags?:number, mode?:number): number

同步地打开文件。

  • 参数:
参数名 类型 必填 说明
path string 待打开文件的绝对路径。
flags number 打开文件的选项,必须指定如下选项中的一个,默认以只读方式打开:
0o0:只读打开。
0o1:只写打开。
0o2:读写打开。
同时,也可给定如下选项,以按位或的方式追加,默认不给定任何额外选项:
0o100:若文件不存在,则创建文件。使用该选项时必须指定第三个参数mode。
0o200:如果追加了0o100 选项,且文件已经存在,则报错。
0o1000:如果文件存在且以只写或读写的方式打开文件,则将其长度裁剪为零。
0o2000:以追加方式打开,后续写将追加到文件末尾。
0o4000:如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续IO进行非阻塞操作。
0o200000:如果path指向目录,则报错。
0o400000:如果path指向符号链接,则报错。
0o4010000:以同步IO的方式打开文件。
mode number 若创建文件,则指定文件的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o666。
0o666:所有者具有读、写及可执行权限,其余用户具有读、写及可执行权限。
0o0700:所有者具有读、写及可执行权限。
0o0400:所有者具有读权限。
0o0200:所有者具有写权限。
0o0100:所有者具有可执行权限。
0o0070:所有用户组具有读、写及可执行权限。
0o0040:所有用户组具有读权限。
0o0020:所有用户组具有写权限。
0o0010:所有用户组具有可执行权限。
0o0007:其余用户具有读、写及可执行权限。
0o0004:其余用户具有读权限。
0o0002:其余用户具有写权限。
0o0001 :其余用户具有可执行权限。
  • 返回值:
类型 说明
number 打开文件的文件描述符。
  • 示例:

    let fd = fileio.openSync(path);
    

accessSync(path: string, mode?: number): void

同步地检查当前进程是否可访问某文件。

  • 参数:
参数名 类型 必填 说明
path string 文件路径。
mode number 查询文件时的选项,可给定如下选项,以按位或的方式使用多个选项,默认给定0。
确认当前进程是否具有对应权限:
0:确认文件是否存在。
1:确认当前进程是否具有可执行权限。
2:确认当前进程是否具有写权限。
4:确认当前进程是否具有读权限。
  • 返回值:

  • 示例:

    fileio.accessSync(path);
    

chmodSync(path:string, mode:number):void

同步地修改文件权限。

  • 参数:
参数名 类型 必填 说明
path string 文件路径。
mode number 文件的访问权限,可给定如下权限,以按位或的方式追加权限。只有该文件的所有者或有效用户识别码为0,才可以修改该文件的权限。
0o4000:文件的 (set user-id on execution)位
0o2000:文件的 (set group-id on execution)位
0o1000:文件的sticky 位
0o0700:所有者具有读、写及可执行权限。
0o0400:所有者具有读权限。
0o0200:所有者具有写权限。
0o0100:所有者具有可执行权限。
0o0070:所有用户组具有读、写及可执行权限。
0o0040:所有用户组具有读权限。
0o0020:所有用户组具有写权限。
0o0010:所有用户组具有可执行权限。
0o0007:其余用户具有读、写及可执行权限。
0o0004:其余用户具有读权限。
0o0002:其余用户具有写权限。
0o0001 :其余用户具有可执行权限。
  • 返回值:

  • 示例:

    fileio.chmodSync(path, 0o660);
    

chownSync(path:string, owner:number, group:number):void

同步地修改文件的所有者和组。

  • 参数:
参数名 类型 必填 说明
path string 待修改的文件路径。
owner number 文件所有者的用户ID。
group number 组ID。
  • 返回值:

  • 示例:

    fileio.chownSync(path, UID, UID);
    

closeSync(fd: number): void

关闭文件描述符。

  • 参数:
参数名 类型 必填 说明
fd number 文件描述符。
  • 返回值:

  • 示例:

    fileio.closeSync(fd);
    

copyFileSync(src:string, dest:string, mode?:number): void

同步地复制文件。

  • 参数:
参数名 类型 必填 说明
src string 待复制文件的路径。
dest string 目标文件路径。
mode number mode提供覆盖文件的选项,当前仅支持0,且默认为0。0:完全覆盖目标文件,未覆盖部分将被裁切掉。
  • 返回值:

  • 示例:

    fileio.copyFileSync(src, dest);
    

fchmodSync(fd:number, mode:number):void

同步地更改文件描述符所指文件的权限。

  • 参数:
参数名 类型 必填 说明
fd number 待修改权限的文件描述符
mode number 文件的访问权限,可给定如下权限,以按位或的方式追加权限。只有该文件的所有者或有效用户识别码为0,才可以修改该文件的权限。
0o4000:文件的 (set user-id on execution)位
0o2000:文件的 (set group-id on execution)位
0o1000:文件的sticky 位
0o0700:所有者具有读、写及可执行权限。
0o0400:所有者具有读权限。
0o0200:所有者具有写权限。
0o0100:所有者具有可执行权限。
0o0070:所有用户组具有读、写及可执行权限。
0o0040:所有用户组具有读权限。
0o0020:所有用户组具有写权限。
0o0010:所有用户组具有可执行权限。
0o0007:其余用户具有读、写及可执行权限。
0o0004:其余用户具有读权限。
0o0002:其余用户具有写权限。
0o0001 :其余用户具有可执行权限。
  • 返回值:

  • 示例:

    let fd = fileio.openSync(path, 0o2);
    fileio.fchmodSync(fd, 0o660);
    

fchownSync(fd:number, owner:number, group:number):void

同步地更改已打开文件的所有者和组。

  • 参数:
参数名 类型 必填 说明
fd number 要修改的文件描述符
owner number 文件所有者的用户ID
group number 组ID
  • 返回值:

  • 示例:

    let fd = fileio.openSync(path, 0o2);
    fileio.fchownSync(fd, UID, UID);
    

fstatSync(fd:number):Stat

同步地获取已打开文件的信息。

  • 参数:
参数名 类型 必填 说明
fd number 已打开文件的文件描述符
  • 返回值:
类型 说明
Stat 表示文件的具体信息。
  • 示例:

    let fd = fileio.openSync(path, 0o2);
    let stat = fileio.fstatSync(fd);
    

ftruncateSync(fd:number, len?:number):void

同步地修改已打开文件的大小。

  • 参数:
参数名 类型 必填 说明
fd number 待修改的文件描述符
len number 指定文件大小,缺省值0,原文件大小超过len部分会被删除
  • 返回值:

  • 示例:

    let fd = fileio.openSync(path, 0o2);
    fileio.ftruncateSync(fd);
    

mkdirSync(path: string, mode?: number): void

同步地创建目录。

  • 参数:
参数名 类型 必填 说明
path string 待创建目录的绝对路径。
mode number 待创建目录的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o775。
0o775:所有者具有读、写及可执行权限,其余用户具有读、写及可执行权限。
0o700:所有者具有读、写及可执行权限。
0o400:所有者具有读权限。
0o200:所有者具有写权限。
0o100:所有者具有可执行权限。
0o070:所有用户组具有读、写及可执行权限。
0o040:所有用户组具有读权限。
0o020:所有用户组具有写权限。
0o010:所有用户组具有可执行权限。
0o007:其余用户具有读、写及可执行权限。
0o004:其余用户具有读权限。
0o002:其余用户具有写权限。
0o001:其余用户具有可执行权限。
  • 返回值:

  • 示例:

    fileio.mkdirSync(path);
    

readSync(fd: number, buffer: ArrayBuffer, options?: Object): number

同步地从文件读取数据。

  • 参数:
参数名 类型 必填 说明
fd number 待读取文件的文件描述符。
buffer ArrayBuffer 用于读取文件的缓冲区。
options Object 支持如下选项:
offset,number 类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。
length,number 类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。
position,number 类型,表示期望读取文件的位置。可选,默认从当前位置开始读。
  • 返回值:
类型 说明
number 实际读取的长度。
  • 示例:

    let fd = fileio.openSync(path, 0o2);
    let buf = new ArrayBuffer(4096);
    fileio.readSync(fd, buf);
    console.log(String.fromCharCode.apply(null, new Uint8Array(buf)));
    

renameSync(path:string, pathTarget:string):void

同步地重命名文件。

  • 参数:
参数名 类型 必填 说明
path string 待重命名的文件原路径
pathTarget string 要重命名的文件路径
  • 返回值:

  • 示例:

    fileio.renameSync(path, pathTarget);
    

rmdirSync(path:string):void

同步地删除目录。

  • 参数:
参数名 类型 必填 说明
path string 待删除目录的绝对路径。
  • 返回值:

  • 示例:

    fileio.rmdirSync(path);
    

unlinkSync(path: string): void

同步地删除文件。

  • 参数:
参数名 类型 必填 说明
path string 待删除文件的绝对路径。
  • 返回值:

  • 示例:

    fileio.unlinkSync(path);
    

fsyncSync(fd:number):void

同步地将缓冲区数据写回磁盘进行数据同步。

  • 参数:
参数名 类型 必填 说明
fd number 待同步数据的文件描述符
  • 返回值:

  • 示例:

    let fd = fileio.openSync(path, 0o2);
    fileio.fsyncSync(fd);
    

truncateSync(path:string, len?:number):void

同步地修改文件大小。

  • 参数:
参数名 类型 必填 说明
path string 待修改的文件路径
len number 指定文件大小,缺省值0,原文件大小超过len部分会被删除
  • 返回值:

  • 示例:

    fileio.truncateSync(path);
    

writeSync(fd: number, buffer: ArrayBuffer | string, options?:Object): number

同步地将数据写入文件。

  • 参数:
参数名 类型 必填 说明
fd number 待写入文件的文件描述符。
buffer ArrayBuffer | string 待写入文件的数据,可来自缓冲区或字符串。
options Object 支持如下选项:
offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。
length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。
position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。
encoding,string类型,当数据是 string 类型时有效,表示数据的编码方式,默认 'utf-8',仅支持 'utf-8'。
  • 返回值:
类型 说明
number 实际写入的长度。
  • 示例:

    let fd = fileio.openSync(path, 0o102, 0o666);
    let writeLen = fileio.writeSync(fd, 'hello, world');
    

Stat

文件具体信息,在调用Stat的方法前,需要先通过statSync(path:string)方法来构建一个Stat实例。

属性

名称 参数类型 可读 可写 说明
dev number 标识包含该文件的主设备号。
ino number 标识该文件。通常同设备上的不同文件的INO不同。
mode number 表示文件类型及权限,其首 4 位表示文件类型,后 12 位表示权限。各特征位的含义如下:
0o170000:可用于获取文件类型的掩码
0o140000:文件是套接字
0o120000:文件是符号链接
0o100000:文件是一般文件
0o060000:文件属于块设备
0o040000:文件是目录
0o020000:文件是字符设备
0o010000:文件是具名管道,即FIFO
0o0700:可用于获取用户权限的掩码
0o0400:用户读,对于普通文件,文件所有者可读取文件;对于目录,文件所有者可读取目录项
0o0200:用户写,对于普通文件,文件所有者可写入文件;对于目录,文件所有者可创建/删除目录项
0o0100:用户执行,对于普通文件,文件所有者可执行文件;对于目录,文件所有者可在目录中搜索给定路径名0o0070:可用于获取用户组权限的掩码
0o0040:用户组读,对于普通文件,文件所有用户组可读取文件;对于目录,文件所有用户组可读取目录项
0o0020:用户组写,对于普通文件,文件所有用户组可写入文件;对于目录,文件所有用户组可创建/删除目录项0o0010:用户组执行,对于普通文件,文件所有用户组可执行文件;对于目录,文件所有用户组是否可在目录中搜索给定路径名
0o0007:可用于获取其他用户权限的掩码
0o0004:其他读,对于普通文件,其他用户组可读取文件;对于目录,其他用户组可读取目录项
0o0002:其他写,对于普通文件,其他用户组可写入文件;对于目录,其他用户组可创建/删除目录项
0o0001:其他执行,对于普通文件,其他用户组可执行文件;对于目录,其他用户组可在目录中搜索给定路径名
nlink number 文件的硬链接数。
uid number 文件所有者的ID。
gid number 文件所有组的ID。
rdev number 标识包含该文件的从设备号。
size number 文件的大小,以字节为单位。仅对普通文件有效。
blksize number 包含该文件的磁盘块的大小
blocks number 文件占用的块数,计算时块大小按512B计算。
atime number 上次访问该文件的时间,表示距1970年1月1日0时0分0秒的秒数。
mtime number 上次修改该文件的时间,表示距1970年1月1日0时0分0秒的秒数。
ctime number 最近改变文件状态的时间,表示距1970年1月1日0时0分0秒的秒数。

statSync(path:string): Stat

同步地获取文件的信息。

  • 参数:
参数名 类型 必填 说明
path string 文件路径。
  • 返回值:
类型 说明
Stat 表示文件的具体信息。
  • 示例:

    let stat = fileio.statSync(path);
    

isBlockDevice(): boolean

用于判断当前目录项是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是块特殊设备。
  • 示例:

    let isBLockDevice = fileio.statSync(fpath).isBlockDevice();
    

isCharacterDevice(): boolean

用于判断当前目录项是否是字符特殊文件。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是字符特殊设备。
  • 示例:

    let isCharacterDevice = fileio.statSync(fpath).isCharacterDevice();
    

isDirectory(): boolean

用于判断当前目录项是否是目录。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是目录。
  • 示例:

    let isDirectory = fileio.statSync(fpath).isDirectory(); 
    

isFIFO(): boolean

用于判断当前目录项是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是 FIFO。
  • 示例:

    let isFIFO = fileio.statSync(fpath).isFIFO(); 
    

isFile(): boolean

用于判断当前目录项是否是普通文件。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是普通文件。
  • 示例:

    let isFile = fileio.statSync(fpath).isFile();
    

isSocket(): boolean

用于判断当前目录项是否是套接字。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是套接字。
  • 示例:

    let isSocket = fileio.statSync(fpath).isSocket(); 
    

isSymbolicLink(): boolean

用于判断当前目录项是否是符号链接。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是符号链接。
  • 示例:

    let isSymbolicLink = fileio.statSync(fpath).isSymbolicLink(); 
    

Dir

管理目录,在调用Dir的方法前,需要先通过opendirSync(path: string)方法来构建一个Dir实例。

opendirSync(path: string): Dir

同步地打开文件目录。

  • 参数:
参数名 类型 必填 说明
path string 目录名称。
  • 返回值:
类型 说明
Dir 返回Dir对象。
  • 示例:

    let dir = fileio.opendirSync(path);
    

readSync(): Dirent

同步读取下一个目录项。

  • 参数:

  • 返回值:

类型 说明
Dirent 表示一个目录项。
  • 示例:

    let dir = fileio.opendirSync(dpath);
    let dirent = dir.readSync();
    console.log(dirent.name);
    

closeSync(): void

用于关闭目录。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。

  • 参数:

  • 返回值:

  • 示例:

    let dir = fileio.opendirSync(dpath);
    dir.closeSync();
    

Dirent

在调用Dirent的方法前,需要先通过dir.readSync()方法来构建一个Dirent实例。

属性

名称 参数类型 可读 可写 说明
name string 目录项的名称。

isBlockDevice(): boolean

用于判断当前目录项是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是块特殊设备。
  • 示例:

    let dir = fileio.opendirSync(dpath);
    let isBLockDevice = dir.readSync().isBlockDevice();
    

isCharacterDevice(): boolean

用于判断当前目录项是否是字符特殊设备。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是字符特殊设备。
  • 示例:

    let dir = fileio.opendirSync(dpath);
    let isCharacterDevice = dir.readSync().isCharacterDevice(); 
    

isDirectory(): boolean

用于判断当前目录项是否是目录。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是目录。
  • 示例:

    let dir = fileio.opendirSync(dpath);
    let isDirectory = dir.readSync().isDirectory(); 
    

isFIFO(): boolean

用于判断当前目录项是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是FIFO。
  • 示例:

    let dir = fileio.opendirSync(dpath);
    let isFIFO = dir.readSync().isFIFO(); 
    

isFile(): boolean

用于判断当前目录项是否是普通文件。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是普通文件。
  • 示例:

    let dir = fileio.opendirSync(dpath);
    let isFile = dir.readSync().isFile(); 
    

isSocket(): boolean

用于判断当前目录项是否是套接字。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是套接字。
  • 示例:

    let dir = fileio.opendirSync(dpath);
    let isSocket = dir.readSync().isSocket(); 
    

isSymbolicLink(): boolean

用于判断当前目录项是否是符号链接。

  • 参数:

  • 返回值:

类型 说明
boolean 表示当前目录项是否是符号链接。
  • 示例:

    let dir = fileio.opendirSync(dpath);
    let isSymbolicLink = dir.readSync().isSymbolicLink();
    

Stream

createStreamSync(path:string, mode:string): Stream

同步地获取文件流。

  • 参数:
参数名 类型 必填 说明
path string 文件路径。
mode string 文件访问模式,以文本方式打开文件可给定如下选项,如果要以二进制形式打开,需要在模式字符串的末尾或两个字符中间加上“b”。
r: 打开只读文件;文件必须存在。
w: 打开只写空文件;若文件已存在则舍弃原有文件内容,否则建立该文件。
a: 打开只写文件;若文件不存在,创建新文件,否则在文件末尾追加数据。
r+: 打开可读写文件;文件必须存在。
w+: 打开可读写空文件;若文件已存在则舍弃原有文件内容,否则建立该文件。
a+: 打开可读写文件;若文件不存在,创建新文件,否则在文件末尾追加数据。
  • 返回值:
类型 说明
Stream 表示文件流。
  • 示例:

    let ss = fileio.createStreamSync(path, "r+");
    

fdopenStreamSync(fd:number, mode:string):Stream

同步地将文件描述符转为文件流。

  • 参数:
参数名 类型 必填 说明
fd number 已打开文件的文件描述符。
mode string 文件访问模式,以文本方式打开文件可给定如下选项,如果要以二进制形式打开,需要在模式字符串的末尾或两个字符中间加上“b”。
r: 打开只读文件;文件必须存在。
w: 打开只写空文件;若文件已存在则舍弃原有文件内容,否则建立该文件。
a: 打开只写文件;若文件不存在,创建新文件,否则在文件末尾追加数据。
r+: 打开可读写文件;文件必须存在。
w+: 打开可读写空文件;若文件已存在则舍弃原有文件内容,否则建立该文件。
a+: 打开可读写文件;若文件不存在,创建新文件,否则在文件末尾追加数据。
  • 返回值:
类型 说明
Stream 表示文件流。
  • 示例:

    let fd = fileio.openSync(path, 0o2);
    let ss = fileio.fdopenStreamSync(fd, "r+");
    

writeSync(buffer: ArrayBuffer | string, options?:Object):number

同步地向文件流写入数据。

  • 参数:
参数名 类型 必填 说明
buffer ArrayBuffer |string 待写入的数据,可来自缓冲区或字符串。
options object 支持如下选项:
offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。
length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。
position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。
encoding,string类型,当数据是 string 类型时有效,表示数据的编码方式,默认 'utf-8',仅支持 'utf-8'。
  • 返回值:
类型 说明
number 实际写入的长度。
  • 示例:

    let ss = fileio.createStreamSync(path, "r+");
    let writeLen = ss.writeSync('hello, world');
    

flushSync():void

同步地刷新文件流的输出缓冲区。

  • 参数:

  • 返回值:

  • 示例:

    let ss = fileio.createStreamSync(path, "r+");
    let writeLen = ss.writeSync('hello, world');
    ss.flushSync();
    

readSync(buffer: ArrayBuffer, options?:Object):number

同步地从文件流读取数据。

  • 参数:
参数名 类型 必填 说明
buffer ArrayBuffer 用于读取数据的缓冲区。
options Object 支持如下选项:
offset,number 类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。
length,number 类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。
position,number 类型,表示期望读取文件的位置。可选,默认从当前位置开始读。
  • 返回值:
类型 说明
number 实际读取的长度。
  • 示例:

    let ss = fileio.createStreamSync(path, "r+");
    let buf = new ArrayBuffer(4096);
    let readLen = fileio.readSync(buf);
    console.log(String.fromCharCode.apply(null, new Uint8Array(buf)));
    

closeSync():void

同步地关闭文件流。

  • 参数:

  • 返回值:

  • 示例:

    let ss = fileio.createStreamSync(path, "r+");
    ss.closeSync();