文件管理
说明: 从 API Version 6 开始支持。
导入模块
import fileio from '@ohos.fileio';
权限列表
无
使用说明
使用该功能模块对文件/目录进行操作前,需要先获取其绝对路径。
“文件/目录绝对路径”=“应用目录路径”+“文件/目录名”
通过上述接口获取到应用目录路径dir,文件名为“xxx.txt”,文件所在绝对路径为:
let path = dir + "xxx.txt"
文件描述符fd:
let fd = fileio.openSync(path);
fileio.statSync
statSync(path:string): Stat
以同步方法获取文件的信息。
-
参数:
-
返回值:
-
示例:
let stat = fileio.statSync(path);
fileio.opendirSync
opendirSync(path: string): Dir
以同步方法打开文件目录。
-
参数:
-
返回值:
-
示例:
let dir = fileio.opendirSync(path);
fileio.accessSync
accessSync(path: string, mode?: number): void
以同步方法检查当前进程是否可访问某文件。
-
参数:
访问文件时的选项,可给定如下选项,以按位或的方式使用多个选项,默认给定0。
- 0:确认文件是否存在。
- 1:确认当前进程是否具有可执行权限。
- 2:确认当前进程是否具有写权限。
- 4:确认当前进程是否具有读权限。
-
示例:
fileio.accessSync(path);
fileio.closeSync
closeSync(fd: number): void
以同步方法关闭文件。
fileio.copyFileSync
fileio.copyFileSync(src: string, dest: string, mode?:number): void
以同步方法复制文件。
-
参数:
-
示例:
fileio.copyFileSync(src, dest);
fileio.mkdirSync
fileio.mkdirSync(path: string, mode?: number): void
以同步方法创建目录。
-
参数:
-
示例:
fileio.mkdirSync(path);
fileio.openSync
openSync(path: string, flags?: number, mode?: number): number
以同步方法打开文件。
-
参数:
-
返回值:
-
示例:
fileio.openSync(path);
fileio.readSync
readSync(fd: number, buffer: ArrayBuffer, options?: Object): number
以同步方法从文件读取数据。
-
参数:
- offset,number 类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。
- length,number 类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。
- position,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)));
fileio.rmdirSync
rmdirSync(path: string): void
以同步方法删除目录。
fileio.unlinkSync
unlinkSync(path: string): void
以同步方法删除文件。
fileio.writeSync
writeSync(fd: number, buffer: ArrayBuffer | string, options?:Object): number
以同步方法将数据写入文件。
-
参数:
-
返回值:
-
示例:
let fd = fileio.openSync(path, 0o102, 0o666); fileio.writeSync(fd, "hello, world");
fileio.chmodSync7+
chmodSync(path: string, mode: number): void
以同步方法基于文件路径改变文件权限。
-
参数:
-
示例:
fileio.chmodSync(fpath, mode);
fileio.fstatSync7+
fstatSync(fd: number): Stat
以同步方法基于文件描述符获取文件状态信息。
-
参数:
-
返回值:
-
示例:
let fd = fileio.openSync(path); let stat = fileio.fstatSync(fd);
fileio.ftruncateSync7+
ftruncateSync(fd: number, len?: number): void
以同步方法基于文件描述符截断文件。
-
参数:
-
示例:
fileio.ftruncate(fd, len);
fileio.fchmodSync7+
fchmodSync(existingPath: string, newPath: string): void
以同步方法基于文件描述符改变文件权限。
-
参数:
-
示例:
fileio.fchmodSync(fd, mode);
fileio.truncateSync7+
truncateSync(fpath: string, len?: number): void
以同步方法基于文件路径截断文件。
-
参数:
-
示例:
fileio.ftruncate(path, len);
fileio.renameSync7+
renameSync(oldPath: string, newPath: string): void
以同步方法重命名文件。
-
参数:
-
示例:
fileio.rename(oldpath,newpath);
fileio.fsyncSync7+
fsyncSync(fd: number): void
以同步方法同步文件数据。
fileio.chownSync7+
chownSync(path: string, uid: number, gid: number): void
以同步的方法基于文件路径改变文件所有者。
-
参数:
-
示例:
let stat = fileio.statSync(fpath) fileio.chownSync(path, stat.uid, stat.gid);
fileio.createStreamSync7+
createStreamSync(path: string, mode: string): Stream
以同步方法基于文件路径打开文件流。
-
参数:
-
返回值:
-
示例:
let ss = fileio.createStream(path, "r+");
fileio.fdopenStreamSync7+
fdopenStreamSync(fd: number, mode: string): Stream
以同步方法基于文件描述符打开文件流。
-
参数:
-
返回值:
-
示例:
let ss = fileio.fdopenStreamSync(fd, "r+");
fileio.fchownSync7+
fchownSync(fd: number, uid: number, gid: number): void
以同步方法基于文件描述符改变文件所有者。
-
参数:
-
示例:
let stat = fileio.statSync(fpath); fileio.fchownSync(fd, stat.uid, stat.gid);
Stat
文件具体信息,在调用Stat的方法前,需要先通过fileio.statSync来构建一个Stat实例。
属性
isBlockDevice
isBlockDevice(): boolean
用于判断当前目录项是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。
isCharacterDevice
isCharacterDevice(): boolean
用于判断当前目录项是否是字符特殊文件。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。
-
返回值:
-
示例:
let isCharacterDevice = fileio.statSync(path).isCharacterDevice();
isDirectory
isDirectory(): boolean
用于判断当前目录项是否是目录。
isFIFO
isFIFO(): boolean
用于判断当前目录项是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。
isFile
isFile(): boolean
用于判断当前目录项是否是普通文件。
isSocket
isSocket(): boolean
用于判断当前目录项是否是套接字。
isSymbolicLink
isSymbolicLink(): boolean
用于判断当前目录项是否是符号链接。
Stream7+
文件流,在调用Stream的方法前,需要先通过fileio.createStreamSync方法来构建一个Stream实例。
closeSync7+
closeSync(): void
同步关闭文件流。
-
示例:
let ss= fileio.createStreamSync(path); ss.closeSync();
flushSync7+
flushSync(): void
同步刷新文件流。
-
示例:
let ss= fileio.createStreamSync(path); ss.flushSync();
writeSync7+
writeSync(buffer: ArrayBuffer | string, options?:Object): number
以同步方法将数据写入流文件。
-
参数:
-
返回值:
-
示例:
let ss= fileio.createStreamSync(fpath,"r+"); ss.writeSync("hello, world",{offset: 1,length: 5,position: 5,encoding :'utf-8'});
readSync7+
readSync(buffer: ArrayBuffer, options?: Object): number
以同步方法从流文件读取数据。
-
参数:
- offset,number 类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。
- length,number 类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。
- position,number 类型,表示期望读取文件的位置。可选,默认从当前位置开始读。
-
返回值:
-
示例:
let ss = fileio.createStreamSync(fpath, "r+"); ss.readSync(new ArrayBuffer(4096),{offset: 1,length: FILE_CONTENT.length,position: 5});
Dir
管理目录,在调用Dir的方法前,需要先通过fileio.opendirSync方法来构建一个Dir实例。
readSync
readSync(): Dirent
同步读取下一个目录项。
-
返回值:
-
示例:
let dir = fileio.opendirSync(dpath); let dirent = dir.readSync(); console.log(dirent.name);
closeSync
closeSync(): void
用于关闭目录。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。
-
示例:
let dir = fileio.opendirSync(dpath); dir.closeSync();
Dirent
在调用Dirent的方法前,需要先通过readSync方法来构建一个Dirent实例。
属性
isBlockDevice
isBlockDevice(): boolean
用于判断当前目录项是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。
-
返回值:
-
示例:
let dir = fileio.opendirSync(dpath); let isBLockDevice = dir.readSync().isBlockDevice();
isCharacterDevice
isCharacterDevice(): boolean
用于判断当前目录项是否是字符特殊设备。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。
-
返回值:
-
示例:
let dir = fileio.opendirSync(dpath); let isCharacterDevice = dir.readSync().isCharacterDevice();
isDirectory
isDirectory(): boolean
用于判断当前目录项是否是目录。
-
返回值:
-
示例:
let dir = fileio.opendirSync(dpath); let isDirectory = dir.readSync().isDirectory();
isFIFO
isFIFO(): boolean
用于判断当前目录项是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。
-
返回值:
-
示例:
let dir = fileio.opendirSync(dpath); let isFIFO = dir.readSync().isFIFO();
isFile
isFile(): boolean
用于判断当前目录项是否是普通文件。
-
返回值:
-
示例:
let dir = fileio.opendirSync(dpath); let isFile = dir.readSync().isFile();
isSocket
isSocket(): boolean
用于判断当前目录项是否是套接字。
-
返回值:
-
示例:
let dir = fileio.opendirSync(dpath); let isSocket = dir.readSync().isSocket();
isSymbolicLink
isSymbolicLink(): boolean
用于判断当前目录项是否是符号链接。