HarmonyOS API:@ohos.fileio (文件管理)
版本:v3.1 Beta
@ohos.fileio (文件管理)
fileio.fdopenStream7+
fdopenStream(fd: number, mode: string): Promise<Stream>
基于文件描述符打开文件流,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
fd | number | 是 | 待打开文件的文件描述符。 |
mode | string | 是 | - r:打开只读文件,该文件必须存在。 - r+:打开可读写的文件,该文件必须存在。 - w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。 - w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。 - a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 - a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 |
返回值:
类型 | 说明 |
Promise<Stream> | Promise对象。返回文件流的结果。 |
示例:
let filePath = pathDir + "/test.txt";
let fd = fileio.openSync(filePath);
fileio.fdopenStream(fd, "r+").then(function(stream){
console.info("openStream succeed");
}).catch(function(err){
console.info("openStream failed with error:"+ err);
});
fileio.fdopenStream7+
fdopenStream(fd: number, mode: string, callback: AsyncCallback<Stream>): void
基于文件描述符打开文件流,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
fd | number | 是 | 待打开文件的文件描述符。 |
mode | string | 是 | - r:打开只读文件,该文件必须存在。 - r+:打开可读写的文件,该文件必须存在。 - w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。 - w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。 - a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 - a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 |
callback | AsyncCallback<Stream> | 是 | 异步打开文件流之后的回调。 |
示例:
let filePath = pathDir + "/test.txt";
let fd = fileio.openSync(filePath);
fileio.fdopenStream(fd, "r+", function (err, stream) {
// do something
});
fileio.fdopenStreamSync7+
fdopenStreamSync(fd: number, mode: string): Stream
以同步方法基于文件描述符打开文件流。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
fd | number | 是 | 待打开文件的文件描述符。 |
mode | string | 是 | - r:打开只读文件,该文件必须存在。 - r+:打开可读写的文件,该文件必须存在。 - w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。 - w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。 - a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 - a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 |
返回值:
类型 | 说明 |
Stream | 返回文件流的结果。 |
示例:
let filePath = pathDir + "/test.txt";
let fd = fileio.openSync(filePath);
let ss = fileio.fdopenStreamSync(fd, "r+");
fileio.fchown7+
fchown(fd: number, uid: number, gid: number): Promise<void>
基于文件描述符改变文件所有者,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
fd | number | 是 | 待改变文件的文件描述符。 |
uid | number | 是 | 文件所有者的UID。 |
gid | number | 是 | 文件所有组的GID。 |
返回值:
类型 | 说明 |
Promise<void> | Promise对象。无返回值。 |
示例:
let filePath = pathDir + "/test.txt";
let fd = fileio.openSync(filePath);
let stat = fileio.statSync(filePath);
fileio.fchown(fd, stat.uid, stat.gid).then(function() {
console.info("chown succeed");
}).catch(function(err){
console.info("chown failed with error:"+ err);
});
fileio.fchown7+
fchown(fd: number, uid: number, gid: number, callback: AsyncCallback<void>): void
基于文件描述符改变文件所有者,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
fd | number | 是 | 待改变文件的文件描述符。 |
uid | number | 是 | 文件所有者的UID。 |
gid | number | 是 | 文件所有组的GID。 |
callback | AsyncCallback<void> | 是 | 异步改变文件所有者之后的回调。 |
示例:
let filePath = pathDir + "/test.txt";
let fd = fileio.openSync(filePath);
let stat = fileio.statSync(filePath);
fileio.fchown(fd, stat.uid, stat.gid, function (err){
// do something
});
fileio.fchownSync7+
fchownSync(fd: number, uid: number, gid: number): void
以同步方法基于文件描述符改变文件所有者。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
fd | number | 是 | 待改变文件的文件描述符。 |
uid | number | 是 | 文件所有者的UID。 |
gid | number | 是 | 文件所有组的GID。 |
示例:
let filePath = pathDir + "/test.txt";
let fd = fileio.openSync(filePath);
let stat = fileio.statSync(filePath);
fileio.fchownSync(fd, stat.uid, stat.gid);
fileio.lchown7+
lchown(path: string, uid: number, gid: number): Promise<void>
基于文件路径改变文件所有者,更改符号链接本身的所有者,而不是符号链接所指向的实际文件,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
path | string | 是 | 待打开文件的应用沙箱路径。 |
uid | number | 是 | 新的UID。 |
gid | number | 是 | 新的GID。 |
返回值:
类型 | 说明 |
Promise<void> | Promise对象。无返回值。 |
示例:
let filePath = pathDir + "/test.txt";
let stat = fileio.statSync(filePath);
fileio.lchown(filePath, stat.uid, stat.gid).then(function() {
console.info("chown succeed");
}).catch(function(err){
console.info("chown failed with error:"+ err);
});
fileio.lchown7+
lchown(path: string, uid: number, gid: number, callback: AsyncCallback<void>): void
基于文件路径改变文件所有者,更改符号链接本身的所有者,而不是更改符号链接所指向的实际文件,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
path | string | 是 | 待打开文件的应用沙箱路径。 |
uid | number | 是 | 新的UID。 |
gid | number | 是 | 新的GID。 |
callback | AsyncCallback<void> | 是 | 异步改变文件所有者之后的回调。 |
示例:
let filePath = pathDir + "/test.txt";
let stat = fileio.statSync(filePath);
fileio.lchown(filePath, stat.uid, stat.gid, function (err){
// do something
});
fileio.lchownSync7+
lchownSync(path: string, uid: number, gid: number): void
以同步方法基于文件路径改变文件所有者,更改符号链接本身的所有者,而不是更改符号链接所指向的实际文件。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
path | string | 是 | 待打开文件的应用沙箱路径。 |
uid | number | 是 | 新的UID。 |
gid | number | 是 | 新的GID。 |
示例:
let filePath = pathDir + "/test.txt";
let stat = fileio.statSync(filePath);
fileio.lchownSync(filePath, stat.uid, stat.gid);
fileio.createWatcher7+
createWatcher(filename: string, events: number, callback: AsyncCallback<number>): Watcher
监听文件或者目录的变化,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
filePath | string | 是 | 待监视文件的应用沙箱路径。 |
events | number | 是 | - 1: 监听文件或者目录是否发生重命名。 - 2:监听文件或者目录内容的是否修改。 - 3:两者都有。 |
callback | AsyncCallback<number> | 是 | 每发生变化一次,调用一次此函数。 |
返回值:
类型 | 说明 |
Promise对象。返回文件变化监听的实例。 |
示例:
let filePath = pathDir +"/test.txt";
fileio.createWatcher(filePath, 1, function(number){
console.info("Monitoring times: "+number);
});
Readout
仅用于read方法,获取文件的读取结果。
系统能力:以下各项对应的系统能力均为SystemCapability.FileManagement.File.FileIO。
名称 | 类型 | 可读 | 可写 | 说明 |
bytesRead | number | 是 | 是 | 实际读取长度。 |
offset | number | 是 | 是 | 读取数据相对于缓冲区首地址的偏移。 |
buffer | ArrayBuffer | 是 | 是 | 保存读取数据的缓冲区。 |
Stat
文件具体信息,在调用Stat的方法前,需要先通过stat()方法(同步或异步)来构建一个Stat实例。
系统能力:以下各项对应的系统能力均为SystemCapability.FileManagement.File.FileIO。
属性
名称 | 类型 | 可读 | 可写 | 说明 |
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 | 是 | 否 | 文件的大小,以字节为单位。仅对普通文件有效。 |
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秒的秒数。 |
isBlockDevice
isBlockDevice(): boolean
用于判断文件是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示文件是否是块特殊设备。 |
示例:
let filePath = pathDir + "/test.txt";
let isBLockDevice = fileio.statSync(filePath).isBlockDevice();
isCharacterDevice
isCharacterDevice(): boolean
用于判断文件是否是字符特殊文件。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示文件是否是字符特殊设备。 |
示例:
let filePath = pathDir + "/test.txt";
let isCharacterDevice = fileio.statSync(filePath).isCharacterDevice();
isDirectory
isDirectory(): boolean
用于判断文件是否是目录。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示文件是否是目录。 |
示例:
let dirPath = pathDir + "/test";
let isDirectory = fileio.statSync(dirPath).isDirectory();
isFIFO
isFIFO(): boolean
用于判断文件是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示文件是否是 FIFO。 |
示例:
let filePath = pathDir + "/test.txt";
let isFIFO = fileio.statSync(filePath).isFIFO();
isFile
isFile(): boolean
用于判断文件是否是普通文件。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示文件是否是普通文件。 |
示例:
let filePath = pathDir + "/test.txt";
let isFile = fileio.statSync(filePath).isFile();
isSocket
isSocket(): boolean
用于判断文件是否是套接字。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示文件是否是套接字。 |
示例:
let filePath = pathDir + "/test.txt";
let isSocket = fileio.statSync(filePath).isSocket();
isSymbolicLink
isSymbolicLink(): boolean
用于判断文件是否是符号链接。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示文件是否是符号链接。 |
示例:
let filePath = pathDir + "/test";
let isSymbolicLink = fileio.statSync(filePath).isSymbolicLink();
Watcher7+
Watcher是文件变化监听的实例,调用Watcher.stop()方法(同步或异步)来停止文件监听。
stop7+
stop(): Promise<void>
关闭watcher监听,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
示例:
let filePath = path + "/test.txt";
let watcher = fileio.createWatcher(filePath, 1, function(number){
console.info("Monitoring times: "+number);
});
watcher.stop().then(function(){
console.info("close watcher succeed");
});
stop7+
stop(callback: AsyncCallback<void>): void
关闭watcher监听,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
callback | AsyncCallback<void> | 是 | 以异步方法关闭watcher监听之后的回调。 |
示例:
let filePath = path +"/test.txt";
let watcher = fileio.createWatcher(filePath, 1, function(number){
console.info("Monitoring times: "+number);
});
watcher.stop(function(){
console.info("close watcher succeed");
})
Stream
文件流,在调用Stream的方法前,需要先通过createStream()方法(同步或异步)来构建一个Stream实例。
close7+
close(): Promise<void>
关闭文件流,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
Promise<void> | Promise对象。返回表示异步关闭文件流的结果。 |
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath, "r+");
ss.close().then(function(){
console.info("close fileStream succeed");
}).catch(function(err){
console.info("close fileStream failed with error:"+ err);
});
close7+
close(callback: AsyncCallback<void>): void
异步关闭文件流,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
callback | AsyncCallback<void> | 是 | 异步关闭文件流之后的回调。 |
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath, "r+");
ss.close(function (err) {
// do something
});
closeSync
closeSync(): void
同步关闭文件流。
系统能力:SystemCapability.FileManagement.File.FileIO
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath, "r+");
ss.closeSync();
flush7+
flush(): Promise<void>
刷新文件流,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
Promise<void> | Promise对象。返回表示异步刷新文件流的结果。 |
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath, "r+");
ss.flush().then(function (){
console.info("flush succeed");
}).catch(function(err){
console.info("flush failed with error:"+ err);
});
flush7+
flush(callback: AsyncCallback<void>): void
异步刷新文件流,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
callback | AsyncCallback<void> | 是 | 异步刷新文件流后的回调函数。 |
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath, "r+");
ss.flush(function (err) {
// do something
});
flushSync7+
flushSync(): void
同步刷新文件流。
系统能力:SystemCapability.FileManagement.File.FileIO
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath, "r+");
ss.flushSync();
write7+
write(buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; position?: number; encoding?: string; }): Promise<number>
将数据写入流文件,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
buffer | ArrayBuffer|string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 |
options | Object | 否 | 支持如下选项: - offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。 - length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。 - position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。 - encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。 约束:offset+length<=buffer.size。 |
返回值:
类型 | 说明 |
Promise<number> | Promise对象。返回实际写入的长度。 |
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath, "r+");
ss.write("hello, world",{offset: 1,length: 5,position: 5,encoding :'utf-8'}).then(function (number){
console.info("write succeed and size is:"+ number);
}).catch(function(err){
console.info("write failed with error:"+ err);
});
write7+
write(buffer: ArrayBuffer|string, options: { offset?: number; length?: number; position?: number; encoding?: string; }, callback: AsyncCallback<number>): void
将数据写入流文件,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
buffer | ArrayBuffer|string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 |
options | Object | 否 | 支持如下选项: - offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。 - length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。 - position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。 - encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。 约束:offset+length<=buffer.size。 |
callback | AsyncCallback<number> | 是 | 异步写入完成后执行的回调函数。 |
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath, "r+");
ss.write("hello, world", {offset: 1, length: 5, position: 5, encoding :'utf-8'}, function (err, bytesWritten) {
if (bytesWritten) {
// do something
console.info("write succeed and size is:"+ bytesWritten);
}
});
writeSync7+
writeSync(buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; position?: number; encoding?: string; }): number
以同步方法将数据写入流文件。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
buffer | ArrayBuffer|string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 |
options | Object | 否 | 支持如下选项: - offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。 - length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。 - position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。 - encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。 约束:offset+length<=buffer.size。 |
返回值:
类型 | 说明 |
number | 实际写入的长度。 |
示例:
let filePath = pathDir + "/test.txt";
let ss= fileio.createStreamSync(filePath,"r+");
let num = ss.writeSync("hello, world", {offset: 1, length: 5, position: 5, encoding :'utf-8'});
read7+
read(buffer: ArrayBuffer, options?: { position?: number; offset?: number; length?: number; }): Promise<ReadOut>
从流文件读取数据,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 |
options | Object | 否 | 支持如下选项: - offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。 - length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。 - position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。 约束:offset+length<=buffer.size。 |
返回值:
类型 | 说明 |
Promise<ReadOut> | Promise对象。返回读取的结果。 |
示例:
let filePath = pathDir + "/test.txt";
let ss = fileio.createStreamSync(filePath, "r+");
ss.read(new ArrayBuffer(4096), {offset: 1, length: 5, position: 5}).then(function (readOut){
console.info("read data succeed");
console.log(String.fromCharCode.apply(null, new Uint8Array(readOut.buffer)));
}).catch(function(err){
console.info("read data failed with error:"+ err);
});
read7+
read(buffer: ArrayBuffer, options: { position?: number; offset?: number; length?: number; }, callback: AsyncCallback<ReadOut>): void
从流文件读取数据,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 |
options | Object | 否 | 支持如下选项: - offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。 - length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。 - position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。 约束:offset+length<=buffer.size。 |
callback | AsyncCallback<ReadOut> | 是 | 异步从流文件读取数据之后的回调。 |
示例:
let filePath = pathDir + "/test.txt";
let ss = fileio.createStreamSync(filePath, "r+");
ss.read(new ArrayBuffer(4096),{offset: 1, length: 5, position: 5},function (err, readOut) {
if (readOut) {
console.info("read data succeed");
console.log(String.fromCharCode.apply(null, new Uint8Array(readOut.buffer)));
}
});
readSync7+
readSync(buffer: ArrayBuffer, options?: { position?: number; offset?: number; length?: number; }): number
以同步方法从流文件读取数据。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 |
options | Object | 否 | 支持如下选项: - offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。 - length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。 - position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。 约束:offset+length<=buffer.size。 |
返回值:
类型 | 说明 |
number | 实际读取的长度。 |
示例:
let filePath = pathDir + "/test.txt";
let ss = fileio.createStreamSync(filePath, "r+");
let num = ss.readSync(new ArrayBuffer(4096), {offset: 1, length: 5, position: 5});
Dir
管理目录,在调用Dir的方法前,需要先通过opendir方法(同步或异步)来构建一个Dir实例。
read
read(): Promise<Dirent>
读取下一个目录项,使用Promise异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
Promise<Dirent> | Promise对象。返回表示异步读取目录项的结果。 |
示例:
dir.read().then(function (dirent){
console.log("read succeed, the name of dirent is " + dirent.name);
}).catch(function(err){
console.info("read failed with error:"+ err);
});
read
read(callback: AsyncCallback<Dirent>): void
读取下一个目录项,使用callback异步回调。
系统能力:SystemCapability.FileManagement.File.FileIO
参数:
参数名 | 类型 | 必填 | 说明 |
callback | AsyncCallback<Dirent> | 是 | 异步读取下一个目录项之后的回调。 |
示例:
dir.read(function (err, dirent) {
if (dirent) {
// do something
console.log("read succeed, the name of file is " + dirent.name);
}
});
readSync
readSync(): Dirent
同步读取下一个目录项。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
Dirent | 表示一个目录项。 |
示例:
let dirent = dir.readSync();
close7+
close(): Promise<void>
异步关闭目录,使用promise形式返回结果。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。
系统能力:SystemCapability.FileManagement.File.FileIO
示例:
dir.close().then(function(err){
console.info("close dir successfully");
});
close7+
close(callback: AsyncCallback<void>): void
异步关闭目录,使用callback形式返回结果。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。
系统能力:SystemCapability.FileManagement.File.FileIO
示例:
dir.close(function(err){
console.info("close dir successfully");
});
closeSync
closeSync(): void
用于关闭目录。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。
系统能力:SystemCapability.FileManagement.File.FileIO
示例:
dir.closeSync();
Dirent
在调用Dirent的方法前,需要先通过dir.read()方法(同步或异步)来构建一个Dirent实例。
系统能力:以下各项对应的系统能力均为SystemCapability.FileManagement.File.FileIO。
属性
名称 | 类型 | 可读 | 可写 | 说明 |
name | string | 是 | 否 | 目录项的名称。 |
isBlockDevice
isBlockDevice(): boolean
用于判断当前目录项是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示当前目录项是否是块特殊设备。 |
示例:
let dir = fileio.opendirSync(pathDir);
let isBLockDevice = dir.readSync().isBlockDevice();
isCharacterDevice
isCharacterDevice(): boolean
用于判断当前目录项是否是字符特殊设备。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示当前目录项是否是字符特殊设备。 |
示例:
let dir = fileio.opendirSync(pathDir);
let isCharacterDevice = dir.readSync().isCharacterDevice();
isDirectory
isDirectory(): boolean
用于判断当前目录项是否是目录。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示当前目录项是否是目录。 |
示例:
let dir = fileio.opendirSync(pathDir);
let isDirectory = dir.readSync().isDirectory();
isFIFO
isFIFO(): boolean
用于判断当前目录项是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示当前目录项是否是FIFO。 |
示例:
let dir = fileio.opendirSync(pathDir);
let isFIFO = dir.readSync().isFIFO();
isFile
isFile(): boolean
用于判断当前目录项是否是普通文件。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示当前目录项是否是普通文件。 |
示例:
let dir = fileio.opendirSync(pathDir);
let isFile = dir.readSync().isFile();
isSocket
isSocket(): boolean
用于判断当前目录项是否是套接字。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示当前目录项是否是套接字。 |
示例:
let dir = fileio.opendirSync(pathDir);
let isSocket = dir.readSync().isSocket();
isSymbolicLink
isSymbolicLink(): boolean
用于判断当前目录项是否是符号链接。
系统能力:SystemCapability.FileManagement.File.FileIO
返回值:
类型 | 说明 |
boolean | 表示当前目录项是否是符号链接。 |
示例:
let dir = fileio.opendirSync(pathDir);
let isSymbolicLink = dir.readSync().isSymbolicLink();