提交 420a2113 编写于 作者: O openharmony_ci 提交者: Gitee

!550 提交文件存储及文件管理的文档

Merge pull request !550 from 猫科龙/master
......@@ -105,4 +105,5 @@
- [国际化](国际化.md)
- [资源管理](资源管理.md)
- [升级](升级.md)
- [文件管理](文件管理.md)
- [文件存储](文件存储.md)
\ No newline at end of file
# 文件存储
更新时间: 2021-07-09 15:29
说明
从API Version 6开始,该接口不再维护,推荐使用[文件管理接口(@ohos.fileio)](文件管理.md)进行文件存储管理。
涉及到文件目录的请参考下述表格:
<a name="table947391523311"></a>
<table><thead align="left"><tr id="row84733151332"><th class="cellrowborder" valign="top" width="13.969999999999999%" id="mcps1.2.5.1.1"><p id="p32271219113313"><a name="p32271219113313"></a><a name="p32271219113313"></a>目录类型</p>
</th>
<th class="cellrowborder" valign="top" width="16.41%" id="mcps1.2.5.1.2"><p id="p3227191993310"><a name="p3227191993310"></a><a name="p3227191993310"></a>路径前缀</p>
</th>
<th class="cellrowborder" valign="top" width="22%" id="mcps1.2.5.1.3"><p id="p192277196333"><a name="p192277196333"></a><a name="p192277196333"></a>访问可见性</p>
</th>
<th class="cellrowborder" valign="top" width="47.620000000000005%" id="mcps1.2.5.1.4"><p id="p18227719103313"><a name="p18227719103313"></a><a name="p18227719103313"></a>说明</p>
</th>
</tr>
</thead>
<tbody><tr id="row1474161514330"><td class="cellrowborder" valign="top" width="13.969999999999999%" headers="mcps1.2.5.1.1 "><p id="p9896152614335"><a name="p9896152614335"></a><a name="p9896152614335"></a>临时目录</p>
</td>
<td class="cellrowborder" valign="top" width="16.41%" headers="mcps1.2.5.1.2 "><p id="p389632610335"><a name="p389632610335"></a><a name="p389632610335"></a>internal://cache/</p>
</td>
<td class="cellrowborder" valign="top" width="22%" headers="mcps1.2.5.1.3 "><p id="p989610267332"><a name="p989610267332"></a><a name="p989610267332"></a>仅本应用可见</p>
</td>
<td class="cellrowborder" valign="top" width="47.620000000000005%" headers="mcps1.2.5.1.4 "><p id="p16896726173311"><a name="p16896726173311"></a><a name="p16896726173311"></a>可读写,随时可能清除,不保证持久性。一般用作下载临时目录或缓存目录。</p>
</td>
</tr>
<tr id="row194741315193312"><td class="cellrowborder" valign="top" width="13.969999999999999%" headers="mcps1.2.5.1.1 "><p id="p12896142620339"><a name="p12896142620339"></a><a name="p12896142620339"></a>应用私有目录</p>
</td>
<td class="cellrowborder" valign="top" width="16.41%" headers="mcps1.2.5.1.2 "><p id="p118969269332"><a name="p118969269332"></a><a name="p118969269332"></a>internal://app/</p>
</td>
<td class="cellrowborder" valign="top" width="22%" headers="mcps1.2.5.1.3 "><p id="p189612263333"><a name="p189612263333"></a><a name="p189612263333"></a>仅本应用可见</p>
</td>
<td class="cellrowborder" valign="top" width="47.620000000000005%" headers="mcps1.2.5.1.4 "><p id="p1089682623314"><a name="p1089682623314"></a><a name="p1089682623314"></a>随应用卸载删除。</p>
</td>
</tbody>
</table>
## 支持设备
| API | 手机 | 平板 | 智慧屏 | 智能穿戴 |
| --------------------- | ---- | ---- | ------ | -------- |
| file.move | 支持 | 支持 | 支持 | 支持 |
| file.copy | 支持 | 支持 | 支持 | 支持 |
| file.list | 支持 | 支持 | 支持 | 支持 |
| file.get | 支持 | 支持 | 支持 | 支持 |
| file.delete | 支持 | 支持 | 支持 | 支持 |
| file.writeText | 支持 | 支持 | 支持 | 支持 |
| file.writeArrayBuffer | 支持 | 支持 | 支持 | 支持 |
| file.readText | 支持 | 支持 | 支持 | 支持 |
| file.readArrayBuffer | 支持 | 支持 | 支持 | 支持 |
| file.access | 支持 | 支持 | 支持 | 支持 |
| file.mkdir | 支持 | 支持 | 支持 | 支持 |
| file.rmdir | 支持 | 支持 | 支持 | 支持 |
说明
file.writeText、file.writeArrayBuffer、file.readText和file.readArrayBuffer仅支持文本文档读写。
## 导入模块
```javascript
import file from '@system.file';
```
## 权限列表
## file.move(OBJECT)
将指定文件移动到其他指定位置。
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ----------------------------------------------------- |
| srcUri | string | 是 | 要移动的文件的uri。 |
| dstUri | string | 是 | 文件要移动到的位置的uri。 |
| success | Function | 否 | 接口调用成功的回调函数,返回文件要移动到的位置的uri。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.move({
srcUri: 'internal://app/myfiles1',
dstUri: 'internal://app/myfiles2',
success: function(uri) {
console.log('call success callback success');
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.copy(OBJECT)
将指定文件拷贝并存储到指定位置,接口所使用的URI描述详见[文件组织](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-framework-file-0000000000611396)
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ |
| srcUri | string | 是 | 要拷贝的文件的uri。 |
| dstUri | string | 是 | 文件要拷贝到的位置的uri。 不支持用应用资源路径或tmp类型的uri。 |
| success | Function | 否 | 接口调用成功的回调函数,返回文件要拷贝到的位置的uri。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.copy({
srcUri: 'internal://app/file.txt',
dstUri: 'internal://app/file_copy.txt',
success: function(uri) {
console.log('call success callback success');
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.list(OBJECT)
获取指定路径下全部文件的列表,接口所使用的 URI 描述详见[文件组织](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-framework-file-0000000000611396)
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------ |
| uri | string | 是 | 目录uri。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
success返回值:
| 参数名 | 类型 | 说明 |
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| fileList | Array<[FileInfo](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-file-storage-0000000000629445#ZH-CN_TOPIC_0000001102026082__table156231426174610)> | 获取的文件列表,其中每个文件的信息的格式为: **{** **uri:'file1',** **lastModifiedTime:1589965924479,** **length:10240,** **type: 'file'** **}** |
| 参数名 | 类型 | 说明 |
| ---------------- | ------ | ------------------------------------------------------------ |
| uri | string | 文件的 uri。 |
| lastModifiedTime | number | 文件上一次保存时的时间戳,显示从1970/01/01 00:00:00 GMT到当前时间的毫秒数。 |
| length | number | 文件的大小,单位为字节。 |
| type | string | 文件的类型,可选值为: dir:目录;file:文件。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.list({
uri: 'internal://app/pic',
success: function(data) {
console.log(data.fileList);
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.get(OBJECT)
获取指定本地文件的信息,URI请参考[文件组织](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-framework-file-0000000000611396)
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| --------- | -------- | ---- | --------------------------------------------- |
| uri | string | 是 | 文件的uri。 |
| recursive | boolean | 否 | 是否进行递归获取子目录文件列表,缺省为false。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
success返回值:
| 参数名 | 类型 | 说明 |
| ---------------- | ------ | ------------------------------------------------------------ |
| uri | string | 文件的uri。 |
| length | number | 文件字节长。 |
| lastModifiedTime | number | 文件保存时的时间戳,从1970/01/01 00:00:00到当前时间的毫秒数。 |
| type | string | 文件类型,可选值为: dir:目录;file:文件。 |
| subFiles | Array | 文件列表。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.get({
uri: 'internal://app/file',
success: function(data) {
console.log(data.uri);
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.delete(OBJECT)
删除本地文件,使用的URI参考[文件组织](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-framework-file-0000000000611396)
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ----------------------------------- |
| uri | string | 是 | 删除文件的uri,不能是应用资源路径。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 参数错误。 |
| 300 | I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.delete({
uri: 'internal://app/my_file',
success: function() {
console.log('call delete success.');
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.writeText(OBJECT)
写文本内容到指定文件。
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | --------------------------------------- |
| uri | string | 是 | 本地文件uri,如果文件不存在会创建文件。 |
| text | string | 是 | 写入的字符串。 |
| encoding | string | 否 | 编码格式,默认为UTF-8。 |
| append | boolean | 否 | 是否追加模式,默认为false。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 参数错误。 |
| 300 | I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.writeText({
uri: 'internal://app/workspace/test.txt',
text: 'Text that just for test.',
success: function() {
console.log('call writeText success.');
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.writeArrayBuffer(OBJECT)
写Buffer内容到指定文件。
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------- | ---- | ------------------------------------------------------------ |
| uri | string | 是 | 本地文件uri,如果文件不存在会创建文件。 |
| buffer | Uint8Array | 是 | 写入的Buffer。 |
| position | number | 否 | 文件开始写入数据的位置的偏移量,默认为0。 |
| append | boolean | 否 | 是否追加模式,默认为false。当设置为true时,position参数无效。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.writeArrayBuffer({
uri: 'internal://app/workspace/test',
buffer: buffer, //buffer为Uint8Array类型
success: function() {
console.log('call writeArrayBuffer success.');
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.readText(OBJECT)
从指定文件中读取文本内容。
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------ |
| uri | string | 是 | 本地文件uri。 |
| encoding | string | 否 | 编码格式,缺省为UTF-8。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
success返回值:
| 参数名 | 类型 | 说明 |
| ------ | ------ | ------------------ |
| text | string | 读取到的文本内容。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.readText({
uri: 'internal://app/workspace/text.txt',
success: function(data) {
console.log('call readText success: ' + data.text);
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.readArrayBuffer(OBJECT)
从指定文件中读取Buffer内容。
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | -------------------------------------- |
| uri | string | 是 | 本地文件uri。 |
| position | number | 否 | 读取的起始位置,缺省为文件的起始位置。 |
| length | number | 否 | 需要读取的长度,缺省则读取到文件结尾。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
success返回值:
| 参数名 | 类型 | 说明 |
| ------ | ---------- | ------------------ |
| buffer | Uint8Array | 读取到的文件内容。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.readArrayBuffer({
uri: 'internal://app/workspace/test',
position: 10,
length: 200,
success: function(data) {
console.log('call readArrayBuffer success: ' + data.buffer);
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.access(OBJECT)
判断指定文件或目录是否存在。
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------ |
| uri | string | 是 | 目录或文件uri。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O 错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.access({
uri: 'internal://app/test',
success: function() {
console.log('call access success.');
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.mkdir(OBJECT)
创建指定目录。
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| --------- | -------- | ---- | ------------------------------------------- |
| uri | string | 是 | 目录的uri路径。 |
| recursive | boolean | 否 | 是否递归创建该目录的上级目录,缺省为false。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | -------------- |
| 202 | 出现参数错误。 |
| 300 | 出现I/O 错误。 |
- 示例
```javascript
file.mkdir({
uri: 'internal://app/test_directory',
success: function() {
console.log('call mkdir success.');
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
## file.rmdir(OBJECT)
删除指定目录。
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| --------- | -------- | ---- | ----------------------------------------- |
| uri | string | 是 | 目录的uri路径。 |
| recursive | boolean | 否 | 是否递归删除子文件和子目录,缺省为false。 |
| success | Function | 否 | 接口调用成功的回调函数。 |
| fail | Function | 否 | 接口调用失败的回调函数。 |
| complete | Function | 否 | 接口调用结束的回调函数。 |
fail返回错误代码:
| 错误码 | 说明 |
| ------ | ------------------ |
| 202 | 出现参数错误。 |
| 300 | 出现I/O 错误。 |
| 301 | 文件或目录不存在。 |
- 示例
```javascript
file.rmdir({
uri: 'internal://app/test_directory',
success: function() {
console.log('call rmdir success.');
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
```
# 文件管理
## 支持设备
| 手机 | 平板 | 智慧屏 | 智能穿戴 |
| ---- | ------ | ------ | -------- |
| 支持 | 不支持 | 不支持 | 支持 |
## 导入模块
```js
import fileio from '@ohos.fileio'
```
## 权限列表
## openSync(path:string, flags?:number, mode?:number): number
同步地打开文件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| path | string | 是 | 待打开文件的绝对路径。 |
| flags | number | 否 | 打开文件的选项,必须指定如下选项中的一个,默认以只读方式打开:<br>0o0:只读打开。<br/>0o1:只写打开。<br/>0o2:读写打开。<br/>同时,也可给定如下选项,以按位或的方式追加,默认不给定任何额外选项:<br/>0o100:若文件不存在,则创建文件。使用该选项时必须指定第三个参数mode。<br/>0o200:如果追加了0o100 选项,且文件已经存在,则报错。<br/>0o1000:如果文件存在且以只写或读写的方式打开文件,则将其长度裁剪为零。<br/>0o2000:以追加方式打开,后续写将追加到文件末尾。<br/>0o4000:如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续IO进行非阻塞操作。<br/>0o200000:如果path指向目录,则报错。<br/>0o400000:如果path指向符号链接,则报错。<br/>0o4010000:以同步IO的方式打开文件。 |
| mode | number | 否 | 若创建文件,则指定文件的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o666。<br/>0o666:所有者具有读、写及可执行权限,其余用户具有读、写及可执行权限。<br/>0o0700:所有者具有读、写及可执行权限。<br/>0o0400:所有者具有读权限。<br/>0o0200:所有者具有写权限。<br/>0o0100:所有者具有可执行权限。<br/>0o0070:所有用户组具有读、写及可执行权限。<br/>0o0040:所有用户组具有读权限。<br/>0o0020:所有用户组具有写权限。<br/>0o0010:所有用户组具有可执行权限。<br/>0o0007:其余用户具有读、写及可执行权限。<br/>0o0004:其余用户具有读权限。<br/>0o0002:其余用户具有写权限。<br/>0o0001 :其余用户具有可执行权限。 |
- 返回值:
| 类型 | 说明 |
| :----- | :--------------------- |
| number | 打开文件的文件描述符。 |
- 示例:
```js
let fd = fileio.openSync(path);
```
## accessSync(path: string, mode?: number): void
同步地检查当前进程是否可访问某文件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| path | string | 是 | 文件路径。 |
| mode | number | 否 | 查询文件时的选项,可给定如下选项,以按位或的方式使用多个选项,默认给定0。<br>确认当前进程是否具有对应权限:<br>0:确认文件是否存在。<br>1:确认当前进程是否具有可执行权限。<br>2:确认当前进程是否具有写权限。<br>4:确认当前进程是否具有读权限。 |
- 返回值:
- 示例:
```js
fileio.accessSync(path);
```
## chmodSync(path:string, mode:number):void
同步地修改文件权限。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| path | string | 是 | 文件路径。 |
| mode | number | 是 | 文件的访问权限,可给定如下权限,以按位或的方式追加权限。只有该文件的所有者或有效用户识别码为0,才可以修改该文件的权限。<br/>0o4000:文件的 (set user-id on execution)位<br/>0o2000:文件的 (set group-id on execution)位<br/>0o1000:文件的sticky 位<br/>0o0700:所有者具有读、写及可执行权限。<br/>0o0400:所有者具有读权限。<br/>0o0200:所有者具有写权限。<br/>0o0100:所有者具有可执行权限。<br/>0o0070:所有用户组具有读、写及可执行权限。<br/>0o0040:所有用户组具有读权限。<br/>0o0020:所有用户组具有写权限。<br/>0o0010:所有用户组具有可执行权限。<br/>0o0007:其余用户具有读、写及可执行权限。<br/>0o0004:其余用户具有读权限。<br/>0o0002:其余用户具有写权限。<br/>0o0001 :其余用户具有可执行权限。 |
- 返回值:
- 示例:
```js
fileio.chmodSync(path, 0o660);
```
## chownSync(path:string, owner:number, group:number):void
同步地修改文件的所有者和组。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------- |
| path | string | 是 | 待修改的文件路径。 |
| owner | number | 是 | 文件所有者的用户ID。 |
| group | number | 是 | 组ID。 |
- 返回值:
- 示例:
```js
fileio.chownSync(path, UID, UID);
```
## closeSync(fd: number): void
关闭文件描述符。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------ |
| fd | number | 是 | 文件描述符。 |
- 返回值:
- 示例:
```js
fileio.closeSync(fd);
```
## copyFileSync(src:string, dest:string, mode?:number): void
同步地复制文件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| src | string | 是 | 待复制文件的路径。 |
| dest | string | 是 | 目标文件路径。 |
| mode | number | 否 | mode提供覆盖文件的选项,当前仅支持0,且默认为0。0:完全覆盖目标文件,未覆盖部分将被裁切掉。 |
- 返回值:
- 示例:
```js
fileio.copyFileSync(src, dest);
```
## fchmodSync(fd:number, mode:number):void
同步地更改文件描述符所指文件的权限。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| fd | number | 是 | 待修改权限的文件描述符 |
| mode | number | 是 | 文件的访问权限,可给定如下权限,以按位或的方式追加权限。只有该文件的所有者或有效用户识别码为0,才可以修改该文件的权限。<br/>0o4000:文件的 (set user-id on execution)位<br/>0o2000:文件的 (set group-id on execution)位<br/>0o1000:文件的sticky 位<br/>0o0700:所有者具有读、写及可执行权限。<br/>0o0400:所有者具有读权限。<br/>0o0200:所有者具有写权限。<br/>0o0100:所有者具有可执行权限。<br/>0o0070:所有用户组具有读、写及可执行权限。<br/>0o0040:所有用户组具有读权限。<br/>0o0020:所有用户组具有写权限。<br/>0o0010:所有用户组具有可执行权限。<br/>0o0007:其余用户具有读、写及可执行权限。<br/>0o0004:其余用户具有读权限。<br/>0o0002:其余用户具有写权限。<br/>0o0001 :其余用户具有可执行权限。 |
- 返回值:
- 示例:
```js
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 |
- 返回值:
- 示例:
```js
let fd = fileio.openSync(path, 0o2);
fileio.fchownSync(fd, UID, UID);
```
## fstatSync(fd:number):Stat
同步地获取已打开文件的信息。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------------------- |
| fd | number | 是 | 已打开文件的文件描述符 |
- 返回值:
| 类型 | 说明 |
| :--- | :------------------- |
| Stat | 表示文件的具体信息。 |
- 示例:
```js
let fd = fileio.openSync(path, 0o2);
let stat = fileio.fstatSync(fd);
```
## ftruncateSync(fd:number, len?:number):void
同步地修改已打开文件的大小。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------------------------------------------------- |
| fd | number | 是 | 待修改的文件描述符 |
| len | number | 否 | 指定文件大小,缺省值0,原文件大小超过len部分会被删除 |
- 返回值:
- 示例:
```js
let fd = fileio.openSync(path, 0o2);
fileio.ftruncateSync(fd);
```
## mkdirSync(path: string, mode?: number): void
同步地创建目录。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| path | string | 是 | 待创建目录的绝对路径。 |
| mode | number | 否 | 待创建目录的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o775。<br>0o775:所有者具有读、写及可执行权限,其余用户具有读、写及可执行权限。<br/>0o700:所有者具有读、写及可执行权限。<br/>0o400:所有者具有读权限。<br/>0o200:所有者具有写权限。<br/>0o100:所有者具有可执行权限。<br/>0o070:所有用户组具有读、写及可执行权限。<br/>0o040:所有用户组具有读权限。<br/>0o020:所有用户组具有写权限。<br/>0o010:所有用户组具有可执行权限。<br/>0o007:其余用户具有读、写及可执行权限。<br/>0o004:其余用户具有读权限。<br/>0o002:其余用户具有写权限。<br/>0o001:其余用户具有可执行权限。 |
- 返回值:
- 示例:
```
fileio.mkdirSync(path);
```
## readSync(fd: number, buffer: ArrayBuffer, options?: Object): number
同步地从文件读取数据。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ----------- | ---- | ------------------------------------------------------------ |
| fd | number | 是 | 待读取文件的文件描述符。 |
| buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 |
| options | Object | 否 | 支持如下选项:<br>offset,number 类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。<br/>length,number 类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>position,number 类型,表示期望读取文件的位置。可选,默认从当前位置开始读。 |
- 返回值:
| 类型 | 说明 |
| :----- | :--------------- |
| number | 实际读取的长度。 |
- 示例:
```js
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 | 是 | 要重命名的文件路径 |
- 返回值:
- 示例:
```js
fileio.renameSync(path, pathTarget);
```
## rmdirSync(path:string):void
同步地删除目录。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------------------- |
| path | string | 是 | 待删除目录的绝对路径。 |
- 返回值:
- 示例:
```js
fileio.rmdirSync(path);
```
## unlinkSync(path: string): void
同步地删除文件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------------------- |
| path | string | 是 | 待删除文件的绝对路径。 |
- 返回值:
- 示例:
```
fileio.unlinkSync(path);
```
## fsyncSync(fd:number):void
同步地将缓冲区数据写回磁盘进行数据同步。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------------------- |
| fd | number | 是 | 待同步数据的文件描述符 |
- 返回值:
- 示例:
```js
let fd = fileio.openSync(path, 0o2);
fileio.fsyncSync(fd);
```
## truncateSync(path:string, len?:number):void
同步地修改文件大小。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------------------------------------------------- |
| path | string | 是 | 待修改的文件路径 |
| len | number | 否 | 指定文件大小,缺省值0,原文件大小超过len部分会被删除 |
- 返回值:
- 示例:
```js
fileio.truncateSync(path);
```
## writeSync(fd: number, buffer: ArrayBuffer | string, options?:Object): number
同步地将数据写入文件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------- | --------------------- | ---- | ------------------------------------------------------------ |
| fd | number | 是 | 待写入文件的文件描述符。 |
| buffer | ArrayBuffer \| string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 |
| options | Object | 否 | 支持如下选项:<br/>offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。<br/>length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。<br/>encoding,string类型,当数据是 string 类型时有效,表示数据的编码方式,默认 'utf-8',仅支持 'utf-8'。 |
- 返回值:
| 类型 | 说明 |
| :----- | :--------------- |
| number | 实际写入的长度。 |
- 示例:
```js
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 位表示权限。各特征位的含义如下:<br/>0o170000:可用于获取文件类型的掩码<br/>0o140000:文件是套接字<br/>0o120000:文件是符号链接<br/>0o100000:文件是一般文件<br/>0o060000:文件属于块设备<br/>0o040000:文件是目录<br/>0o020000:文件是字符设备<br/>0o010000:文件是具名管道,即FIFO<br/>0o0700:可用于获取用户权限的掩码<br/>0o0400:用户读,对于普通文件,文件所有者可读取文件;对于目录,文件所有者可读取目录项<br/>0o0200:用户写,对于普通文件,文件所有者可写入文件;对于目录,文件所有者可创建/删除目录项<br/>0o0100:用户执行,对于普通文件,文件所有者可执行文件;对于目录,文件所有者可在目录中搜索给定路径名0o0070:可用于获取用户组权限的掩码<br/>0o0040:用户组读,对于普通文件,文件所有用户组可读取文件;对于目录,文件所有用户组可读取目录项<br/>0o0020:用户组写,对于普通文件,文件所有用户组可写入文件;对于目录,文件所有用户组可创建/删除目录项0o0010:用户组执行,对于普通文件,文件所有用户组可执行文件;对于目录,文件所有用户组是否可在目录中搜索给定路径名<br/>0o0007:可用于获取其他用户权限的掩码<br/>0o0004:其他读,对于普通文件,其他用户组可读取文件;对于目录,其他用户组可读取目录项<br/>0o0002:其他写,对于普通文件,其他用户组可写入文件;对于目录,其他用户组可创建/删除目录项<br/>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 | 表示文件的具体信息。 |
- 示例:
```js
let stat = fileio.statSync(path);
```
### isBlockDevice(): boolean
用于判断当前目录项是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :------------------------------- |
| boolean | 表示当前目录项是否是块特殊设备。 |
- 示例:
```js
let isBLockDevice = fileio.statSync(fpath).isBlockDevice();
```
### isCharacterDevice(): boolean
用于判断当前目录项是否是字符特殊文件。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :--------------------------------- |
| boolean | 表示当前目录项是否是字符特殊设备。 |
- 示例:
```js
let isCharacterDevice = fileio.statSync(fpath).isCharacterDevice();
```
### isDirectory(): boolean
用于判断当前目录项是否是目录。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :------------------------- |
| boolean | 表示当前目录项是否是目录。 |
- 示例:
```js
let isDirectory = fileio.statSync(fpath).isDirectory();
```
### isFIFO(): boolean
用于判断当前目录项是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :-------------------------- |
| boolean | 表示当前目录项是否是 FIFO。 |
- 示例:
```js
let isFIFO = fileio.statSync(fpath).isFIFO();
```
### isFile(): boolean
用于判断当前目录项是否是普通文件。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :----------------------------- |
| boolean | 表示当前目录项是否是普通文件。 |
- 示例:
```js
let isFile = fileio.statSync(fpath).isFile();
```
### isSocket(): boolean
用于判断当前目录项是否是套接字。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :--------------------------- |
| boolean | 表示当前目录项是否是套接字。 |
- 示例:
```js
let isSocket = fileio.statSync(fpath).isSocket();
```
### isSymbolicLink(): boolean
用于判断当前目录项是否是符号链接。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :----------------------------- |
| boolean | 表示当前目录项是否是符号链接。 |
- 示例:
```js
let isSymbolicLink = fileio.statSync(fpath).isSymbolicLink();
```
## Dir
管理目录,在调用Dir的方法前,需要先通过opendirSync(path: string)方法来构建一个Dir实例。
### opendirSync(path: string): Dir
同步地打开文件目录。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------- |
| path | string | 是 | 目录名称。 |
- 返回值:
| 类型 | 说明 |
| :--- | :------------ |
| Dir | 返回Dir对象。 |
- 示例:
```js
let dir = fileio.opendirSync(path);
```
### readSync(): Dirent
同步读取下一个目录项。
- 参数:
- 返回值:
| 类型 | 说明 |
| :----------------------------------------------------------- | :--------------- |
| [Dirent](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-fileio-0000001169469727#section92331215118) | 表示一个目录项。 |
- 示例:
```js
let dir = fileio.opendirSync(dpath);
let dirent = dir.readSync();
console.log(dirent.name);
```
### closeSync(): void
用于关闭目录。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。
- 参数:
- 返回值:
- 示例:
```js
let dir = fileio.opendirSync(dpath);
dir.closeSync();
```
## Dirent
在调用Dirent的方法前,需要先通过dir.readSync()方法来构建一个Dirent实例。
### 属性
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| ---- | -------- | ---- | ---- | -------------- |
| name | string | 是 | 否 | 目录项的名称。 |
### isBlockDevice(): boolean
用于判断当前目录项是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :------------------------------- |
| boolean | 表示当前目录项是否是块特殊设备。 |
- 示例:
```js
let dir = fileio.opendirSync(dpath);
let isBLockDevice = dir.readSync().isBlockDevice();
```
### isCharacterDevice(): boolean
用于判断当前目录项是否是字符特殊设备。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :--------------------------------- |
| boolean | 表示当前目录项是否是字符特殊设备。 |
- 示例:
```js
let dir = fileio.opendirSync(dpath);
let isCharacterDevice = dir.readSync().isCharacterDevice();
```
### isDirectory(): boolean
用于判断当前目录项是否是目录。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :------------------------- |
| boolean | 表示当前目录项是否是目录。 |
- 示例:
```js
let dir = fileio.opendirSync(dpath);
let isDirectory = dir.readSync().isDirectory();
```
### isFIFO(): boolean
用于判断当前目录项是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :------------------------- |
| boolean | 表示当前目录项是否是FIFO。 |
- 示例:
```js
let dir = fileio.opendirSync(dpath);
let isFIFO = dir.readSync().isFIFO();
```
### isFile(): boolean
用于判断当前目录项是否是普通文件。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :----------------------------- |
| boolean | 表示当前目录项是否是普通文件。 |
- 示例:
```js
let dir = fileio.opendirSync(dpath);
let isFile = dir.readSync().isFile();
```
### isSocket(): boolean
用于判断当前目录项是否是套接字。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :--------------------------- |
| boolean | 表示当前目录项是否是套接字。 |
- 示例:
```js
let dir = fileio.opendirSync(dpath);
let isSocket = dir.readSync().isSocket();
```
### isSymbolicLink(): boolean
用于判断当前目录项是否是符号链接。
- 参数:
- 返回值:
| 类型 | 说明 |
| :------ | :----------------------------- |
| boolean | 表示当前目录项是否是符号链接。 |
- 示例:
```js
let dir = fileio.opendirSync(dpath);
let isSymbolicLink = dir.readSync().isSymbolicLink();
```
## Stream
### createStreamSync(path:string, mode:string): Stream
同步地获取文件流。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| path | string | 是 | 文件路径。 |
| mode | string | 是 | 文件访问模式,以文本方式打开文件可给定如下选项,如果要以二进制形式打开,需要在模式字符串的末尾或两个字符中间加上“b”。<br/>r: 打开只读文件;文件必须存在。<br/>w: 打开只写空文件;若文件已存在则舍弃原有文件内容,否则建立该文件。<br/>a: 打开只写文件;若文件不存在,创建新文件,否则在文件末尾追加数据。<br/>r+: 打开可读写文件;文件必须存在。<br/>w+: 打开可读写空文件;若文件已存在则舍弃原有文件内容,否则建立该文件。<br/>a+: 打开可读写文件;若文件不存在,创建新文件,否则在文件末尾追加数据。 |
- 返回值:
| 类型 | 说明 |
| :----- | :----------- |
| Stream | 表示文件流。 |
- 示例:
```js
let ss = fileio.createStreamSync(path, "r+");
```
### fdopenStreamSync(fd:number, mode:string):Stream
同步地将文件描述符转为文件流。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| fd | number | 是 | 已打开文件的文件描述符。 |
| mode | string | 是 | 文件访问模式,以文本方式打开文件可给定如下选项,如果要以二进制形式打开,需要在模式字符串的末尾或两个字符中间加上“b”。<br/>r: 打开只读文件;文件必须存在。<br/>w: 打开只写空文件;若文件已存在则舍弃原有文件内容,否则建立该文件。<br/>a: 打开只写文件;若文件不存在,创建新文件,否则在文件末尾追加数据。<br/>r+: 打开可读写文件;文件必须存在。<br/>w+: 打开可读写空文件;若文件已存在则舍弃原有文件内容,否则建立该文件。<br/>a+: 打开可读写文件;若文件不存在,创建新文件,否则在文件末尾追加数据。 |
- 返回值:
| 类型 | 说明 |
| :----- | :----------- |
| Stream | 表示文件流。 |
- 示例:
```js
let fd = fileio.openSync(path, 0o2);
let ss = fileio.fdopenStreamSync(fd, "r+");
```
### writeSync(buffer: ArrayBuffer | string, options?:Object):number
同步地向文件流写入数据。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------- | -------------------- | ---- | ------------------------------------------------------------ |
| buffer | ArrayBuffer \|string | 是 | 待写入的数据,可来自缓冲区或字符串。 |
| options | object | 否 | 支持如下选项:<br/>offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。<br/>length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。<br/>encoding,string类型,当数据是 string 类型时有效,表示数据的编码方式,默认 'utf-8',仅支持 'utf-8'。 |
- 返回值:
| 类型 | 说明 |
| :----- | :--------------- |
| number | 实际写入的长度。 |
- 示例:
```js
let ss = fileio.createStreamSync(path, "r+");
let writeLen = ss.writeSync('hello, world');
```
### flushSync():void
同步地刷新文件流的输出缓冲区。
- 参数:
- 返回值:
- 示例:
```js
let ss = fileio.createStreamSync(path, "r+");
let writeLen = ss.writeSync('hello, world');
ss.flushSync();
```
### readSync(buffer: ArrayBuffer, options?:Object):number
同步地从文件流读取数据。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ----------- | ---- | ------------------------------------------------------------ |
| buffer | ArrayBuffer | 是 | 用于读取数据的缓冲区。 |
| options | Object | 否 | 支持如下选项:<br/>offset,number 类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。<br/>length,number 类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>position,number 类型,表示期望读取文件的位置。可选,默认从当前位置开始读。 |
- 返回值:
| 类型 | 说明 |
| :----- | :--------------- |
| number | 实际读取的长度。 |
- 示例:
```js
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
同步地关闭文件流。
- 参数:
- 返回值:
- 示例:
```js
let ss = fileio.createStreamSync(path, "r+");
ss.closeSync();
```
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册