b6c02d88创建于 8 天前历史提交

ohos.file.fs(文件管理)

说明:

当前为Beta阶段。

fs模块提供基础文件操作能力,包括文件基本管理、文件目录管理、文件信息统计、文件流式读写等常用功能。

导入模块

import kit.CoreFileKit.*

使用说明

API示例代码使用说明:

  • 若示例代码首行有“// index.cj”注释,表示该示例可在仓颉模板工程的“index.cj”文件中编译运行。
  • 若示例需获取Context应用上下文,需在仓颉模板工程中的“main_ability.cj”文件中进行配置。
  • 获取当前应用沙箱所在路径可通过UIAbilityContext.filesDir获取。

上述示例工程及配置模板详见仓颉示例代码说明

class ConflictFiles

public class ConflictFiles {
    public var srcFile: String
    public var destFile: String
}

功能: 冲突文件信息,支持copyDir及moveDir接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var destFile

public var destFile: String

功能: 目标冲突文件路径。

类型: String

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var srcFile

public var srcFile: String

功能: 源冲突文件路径。

类型: String

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

class File

public class File {}

功能: 由open接口打开的File对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop fd

public prop fd: Int32

功能: 打开的文件描述符。

类型: Int32

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop name

public prop name: String

功能: 文件名。

类型: String

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop path

public prop path: String

功能: 文件路径。

类型: String

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

func getParent()

public func getParent(): String

功能: 获取File对象对应文件父目录。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
String 返回父目录路径。

异常:

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let file = FileIo.open(filePath, mode: (OpenMode.READ_WRITE | OpenMode.CREATE))
    Hilog.info(0, "", "The parent path is: " + file.getParent())
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func tryLock(Bool)

public func tryLock(exclusive!: Bool = false): Unit

功能: 文件非阻塞式施加共享锁或独占锁。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
exclusive Bool false 命名参数。 是否施加独占锁,默认false。true:施加独占锁;false:不施加独占锁。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900008 Bad file descriptor.
    13900020 Invalid argument.
    13900034 Operation would block.
    13900042 Unknown error.
    13900043 No record locks available.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let file = FileIo.open(filePath, mode:(OpenMode.READ_WRITE | OpenMode.CREATE))
    file.tryLock(exclusive: true)
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func unlock()

public func unlock(): Unit

功能: 解锁文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900008 Bad file descriptor.
    13900020 Invalid argument.
    13900034 Operation would block.
    13900042 Unknown error.
    13900043 No record locks available.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.READ_WRITE | OpenMode.CREATE))
    file.tryLock(exclusive: true)
    file.unlock()
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

class FileIo

public class FileIo {}

功能: 提供文件基础操作的能力。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static func access(String, AccessModeType, AccessFlagType)

public static func access(path: String, mode!: AccessModeType = AccessModeType.Exist,
    flag!: AccessFlagType = AccessFlagType.Local): Bool

功能: 检查文件或目录是否在本地,或校验操作权限。

校验读、写或读写权限不通过会抛出13900012(Permission denied)错误码。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 文件或目录应用沙箱路径。
mode AccessModeType AccessModeType.Exist 命名参数。 文件或目录校验的权限。
flag AccessFlagType AccessFlagType.Local 命名参数。 文件或目录校验的位置。

返回值:

类型 说明
Bool 返回布尔值。返回true,表示文件或目录在本地且校验权限存在;返回false,表示文件或目录不存在或者文件或目录在云端或其他分布式设备上。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900020 Invalid argument.
    13900023 Text file busy.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

let pathDir = "path/to/file"
let filePath = pathDir + "/test.txt"
try {
    let res = FileIo.access(filePath, mode: AccessModeType.Write, flag: AccessFlagType.Local)
    if (res) {
        Hilog.info(0, "test", "file exists", "")
    } else {
        Hilog.info(0, "test", "file not exists", "")
    }
} catch (e: BusinessException) {
    Hilog.error(0, "test", "access failed with error message: ${e.message}, error code: ${e.code}", "")
}

static func close(Int32)

public static func close(file: Int32): Unit

功能: 关闭文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
file Int32 - 已打开的文件描述符fd。关闭后文件描述符fd不再具备实际意义,不可再用于进行读写等操作。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900025 No space left on device.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath)
    FileIo.close(file.fd)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func close(File)

public static func close(file: File): Unit

功能: 关闭文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
file File - 已打开的File对象,关闭后file对象不再具备实际意义,不可再用于进行读写等操作。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900025 No space left on device.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath)
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func copyDir(String, String, Int32)

public static func copyDir(src: String, dest: String, mode!: Int32 = 0): Unit

功能: 复制源文件夹至目标路径下。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
src String - 源文件夹的应用沙箱路径。
dest String - 目标文件夹的应用沙箱路径。
mode Int32 0 命名参数。 复制模式,默认值为0。
-  mode为0,文件级别抛异常。目标目录下存在与源目录名冲突的目录,若冲突目录下存在同名文件,则抛出异常。源目录下未冲突的文件全部移动至目标目录下,目标目录下未冲突文件将继续保留,且冲突文件信息将在抛出异常的data属性中以Array<ConflictFiles>形式提供。
-  mode为1,文件级别强制覆盖。目标目录下存在与源目录名冲突的目录,若冲突目录下存在同名文件,则强制覆盖冲突目录下所有同名文件,未冲突文件将继续保留。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900015 File exists.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900030 File name too long.
    13900031 Function not implemented.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let srcPath = pathDir + "/srcDir/"
    let destPath = pathDir + "/destDir/"
    FileIo.copyDir(srcPath, destPath, mode: 0)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func copyFile(String, String, Int32)

public static func copyFile(src: String, dest: String, mode!: Int32 = 0): Unit

功能: 复制文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

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

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900030 File name too long.
    13900031 Function not implemented.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let srcPath = pathDir + "/srcDir/test.txt"
    let dstPath = pathDir + "/dstDir/test.txt"
    FileIo.copyFile(srcPath, dstPath, mode: 0)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func copyFile(String, Int32, Int32)

public static func copyFile(src: String, dest: Int32, mode!: Int32 = 0): Unit

功能: 复制文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

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

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900030 File name too long.
    13900031 Function not implemented.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let srcPath = pathDir + "/srcDir/test.txt"
    let dstPath = pathDir + "/dstDir/test.txt"
    let dstFile = FileIo.open(dstPath)
    FileIo.copyFile(srcPath, dstFile.fd, mode: 0)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func copyFile(Int32, String, Int32)

public static func copyFile(src: Int32, dest: String, mode!: Int32 = 0): Unit

功能: 复制文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

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

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900030 File name too long.
    13900031 Function not implemented.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let srcPath = pathDir + "/srcDir/test.txt"
    let dstPath = pathDir + "/dstDir/test.txt"
    let srcFile = FileIo.open(srcPath)
    FileIo.copyFile(srcFile.fd, dstPath, mode: 0)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func copyFile(Int32, Int32, Int32)

public static func copyFile(src: Int32, dest: Int32, mode!: Int32 = 0): Unit

功能: 复制文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
src Int32 - 待复制文件的文件描述符。
dest Int32 - 目标文件的文件描述符。
mode Int32 0 命名参数。 mode提供覆盖文件的选项,当前仅支持0,且默认为0。
0:完全覆盖目标文件,未覆盖部分将被裁切掉。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900030 File name too long.
    13900031 Function not implemented.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let srcPath = pathDir + "/srcDir/test.txt"
    let dstPath = pathDir + "/dstDir/test.txt"
    let srcFile = FileIo.open(srcPath)
    let dstFile = FileIo.open(dstPath)
    FileIo.copyFile(srcFile.fd, dstFile.fd, mode: 0)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func createRandomAccessFile(String, Int64, RandomAccessFileOptions)

public static func createRandomAccessFile(file: String, mode!: Int64 = OpenMode.READ_ONLY,
    options!: RandomAccessFileOptions = RandomAccessFileOptions()): RandomAccessFile

功能: 基于文件路径创建RandomAccessFile文件对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
file String - 文件的应用沙箱路径。
mode Int64 OpenMode.READ_ONLY 命名参数。 创建文件RandomAccessFile对象的选项,仅当传入文件沙箱路径时生效,必须指定如下选项中的一个,默认以只读方式创建:
- OpenMode.READ_ONLY(0o0):只读创建。
- OpenMode.WRITE_ONLY(0o1):只写创建。
- OpenMode.READ_WRITE(0o2):读写创建。
给定如下功能选项,以按位或的方式追加,默认不给定任何额外选项:
- OpenMode.CREATE(0o100):若文件不存在,则创建文件。
- OpenMode.TRUNC(0o1000):如果RandomAccessFile对象存在且文件具有写权限,则将其长度裁剪为零。
- OpenMode.APPEND(0o2000):以追加方式打开,后续写将追加到RandomAccessFile对象末尾。
- OpenMode.NONBLOCK(0o4000):如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。
- OpenMode.DIR(0o200000):如果path不指向目录,则出错。不允许附加写权限。
- OpenMode.NOFOLLOW(0o400000):如果path指向符号链接,则出错。
- OpenMode.SYNC(0o4010000):以同步IO的方式创建RandomAccessFile对象。
options RandomAccessFileOptions RandomAccessFileOptions() 命名参数。 支持如下选项:
- start,Option<Int64>类型,表示期望读取文件的位置。可选,默认从当前位置开始读。
- end,Option<Int64>类型,表示期望读取结束的位置。可选,默认文件末尾。

返回值:

类型 说明
RandomAccessFile 返回RandomAccessFile文件对象。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900006 No such device or address.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900015 File exists.
    13900017 No such device.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900022 Too many open files.
    13900023 Text file busy.
    13900024 File too large.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900029 Resource deadlock would occur.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900041 Quota exceeded.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    FileIo.write(file.fd, "hello world")
    FileIo.fdatasync(file.fd)
    let randomAccessFile = FileIo.createRandomAccessFile(filePath)
    randomAccessFile.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func createRandomAccessFile(File, Int64, RandomAccessFileOptions)

public static func createRandomAccessFile(file: File, mode!: Int64 = OpenMode.READ_ONLY,
    options!: RandomAccessFileOptions = RandomAccessFileOptions()): RandomAccessFile

功能: 基于文件对象创建RandomAccessFile文件对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
file File - 已打开的File对象。
mode Int64 OpenMode.READ_ONLY 命名参数。 创建文件RandomAccessFile对象的选项,仅当传入文件沙箱路径时生效,必须指定如下选项中的一个,默认以只读方式创建:
- OpenMode.READ_ONLY(0o0):只读创建。
- OpenMode.WRITE_ONLY(0o1):只写创建。
- OpenMode.READ_WRITE(0o2):读写创建。
给定如下功能选项,以按位或的方式追加,默认不给定任何额外选项:
- OpenMode.CREATE(0o100):若文件不存在,则创建文件。
- OpenMode.TRUNC(0o1000):如果RandomAccessFile对象存在且文件具有写权限,则将其长度裁剪为零。
- OpenMode.APPEND(0o2000):以追加方式打开,后续写将追加到RandomAccessFile对象末尾。
- OpenMode.NONBLOCK(0o4000):如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。
- OpenMode.DIR(0o200000):如果path不指向目录,则出错。不允许附加写权限。
- OpenMode.NOFOLLOW(0o400000):如果path指向符号链接,则出错。
- OpenMode.SYNC(0o4010000):以同步IO的方式创建RandomAccessFile对象。
options RandomAccessFileOptions RandomAccessFileOptions() 命名参数。 支持如下选项:
- start,Option<Int64>类型,表示期望读取文件的位置。可选,默认从当前位置开始读。
- end,Option<Int64>类型,表示期望读取结束的位置。可选,默认文件末尾。

返回值:

类型 说明
RandomAccessFile 返回RandomAccessFile文件对象。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900006 No such device or address.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900015 File exists.
    13900017 No such device.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900022 Too many open files.
    13900023 Text file busy.
    13900024 File too large.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900029 Resource deadlock would occur.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900041 Quota exceeded.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    FileIo.write(file.fd, "hello world")
    FileIo.fdatasync(file.fd)
    let randomAccessFile = FileIo.createRandomAccessFile(file)
    randomAccessFile.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func createStream(String, String)

public static func createStream(path: String, mode: String): Stream

功能: 基于文件路径创建文件流。需要配合Stream中的close()函数关闭文件流。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 文件的应用沙箱路径。
mode String - - r:打开只读文件,该文件必须存在。
- r+:打开可读写的文件,该文件必须存在。
- w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。
- w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。
- a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
- a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

返回值:

类型 说明
Stream 返回文件流的结果。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900006 No such device or address.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900015 File exists.
    13900017 No such device.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900022 Too many open files.
    13900023 Text file busy.
    13900024 File too large.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900029 Resource deadlock would occur.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900041 Quota exceeded.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let stream = FileIo.createStream(filePath, "r+")
    Hilog.info(0, "test", "createStream succeed", "")
    stream.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func dup(Int32)

public static func dup(fd: Int32): File

功能: 复制文件描述符,并返回对应的File对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
fd Int32 - 文件描述符。

返回值:

类型 说明
File 打开的File对象。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900014 Device or resource busy.
    13900020 Invalid argument.
    13900022 Too many open files.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file1 = FileIo.open(filePath, mode: (OpenMode.READ_WRITE | OpenMode.CREATE))
    let fd = file1.fd
    let file2 = FileIo.dup(fd)
    Hilog.info(0, "test", "The name of the file2 is ${file2.name}", "")
    FileIo.close(file1)
    FileIo.close(file2)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func fdatasync(Int32)

public static func fdatasync(fd: Int32): Unit

功能: 实现文件内容数据同步。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
fd Int32 - 已打开的文件描述符。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900020 Invalid argument.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath)
    FileIo.fdatasync(file.fd)
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func fdopenStream(Int32, String)

public static func fdopenStream(fd: Int32, mode: String): Stream

功能: 基于文件描述符打开文件流。需要配合Stream中的close()函数关闭文件流。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
fd Int32 - 已打开的文件描述符。
mode String - - r:打开只读文件,该文件必须存在。
- r+:打开可读写的文件,该文件必须存在。
- w:打开只写文件,若文件存在原文件内容将被覆盖。
- w+:打开可读写文件,若文件存在原文件内容将被覆盖。
- a:以附加的方式打开只写文件,写入的数据会被加到文件尾,即文件原先的内容会被保留。
- a+:以附加方式打开可读写的文件,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

返回值:

类型 说明
Stream 返回文件流的结果。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900006 No such device or address.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900015 File exists.
    13900017 No such device.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900022 Too many open files.
    13900023 Text file busy.
    13900024 File too large.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900029 Resource deadlock would occur.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.READ_ONLY | OpenMode.CREATE))
    let stream = FileIo.fdopenStream(file.fd, "r+")
    FileIo.close(file)
    stream.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func fsync(Int32)

public static func fsync(fd: Int32): Unit

功能: 将文件系统缓存数据写入磁盘。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
fd Int32 - 已打开的文件描述符。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900020 Invalid argument.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath)
    FileIo.fsync(file.fd)
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func listFile(String, ListFileOptions)

public static func listFile(path: String, options!: ListFileOptions = ListFileOptions()): Array<String>

功能: 列出当前目录下所有文件名和目录名。支持过滤。

可通过配置options中recursion参数实现递归列出所有文件的相对路径,相对路径以“/”开头。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 目录的应用沙箱路径。
options ListFileOptions ListFileOptions() 命名参数。 文件过滤选项。默认不进行过滤。

返回值:

类型 说明
Array<String> 返回文件名数组。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900018 Not a directory.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filter = Filter(suffix: [".png", ".jpg", ".jpeg"], displayName: ["*abc", "efg*"])
    let listFileOptions = ListFileOptions(recursion: false, listNum: 0, filter: filter)
    let filenames = FileIo.listFile(pathDir, options: listFileOptions)
    for (name in filenames) {
        Hilog.info(0, "test", name, "")
    }
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func lseek(Int32, Int64, WhenceType)

public static func lseek(fd: Int32, offset: Int64, whence!: WhenceType = SeekSet): Int64

功能: 调整文件偏置指针位置。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
fd Int32 - 文件描述符。
offset Int64 - 相对偏移位置,单位为字节。
whence WhenceType SeekSet 命名参数。 偏移指针相对位置类型。不指定则默认为文件起始位置处。

返回值:

类型 说明
Int64 当前文件偏移指针位置(相对于文件头的偏移量,单位为字节)。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900008 Bad file descriptor.
    13900020 Invalid argument.
    13900026 Illegal seek.
    13900038 Value too large for defined data type.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: OpenMode.CREATE)
    let offset = FileIo.lseek(file.fd, 5, whence: WhenceType.SeekSet)
    Hilog.info(0, "test", "The current offset is at ${offset.toString()}", "")
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func lstat(String)

public static func lstat(path: String): Stat

功能: 获取链接文件信息。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 文件的应用沙箱路径path或URI。

返回值:

类型 说明
Stat 返回Stat对象,表示文件的具体信息,详情见Stat。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900038 Value too large for defined data type.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/linkToFile"
    let fileStat = FileIo.lstat(filePath)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func mkdir(String)

public static func mkdir(path: String): Unit

功能: 创建目录。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 目录的应用沙箱路径。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900015 File exists.
    13900018 Not a directory.
    13900020 Invalid argument.
    13900025 No space left on device.
    13900028 Too many links.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let dirPath = pathDir + "/testDir1/testDir2/testDir3"
    FileIo.mkdir(dirPath)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func mkdir(String, Bool)

public static func mkdir(path: String, recursion: Bool): Unit

功能: 创建目录。当recursion指定为true时,可递归创建目录。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 目录的应用沙箱路径。
recursion Bool - 是否递归创建目录。recursion指定为true时,可递归创建目录。recursion指定为false时,仅可创建单层目录。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900015 File exists.
    13900018 Not a directory.
    13900020 Invalid argument.
    13900025 No space left on device.
    13900028 Too many links.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let dirPath = pathDir + "/testDir1/testDir2/testDir3"
    FileIo.mkdir(dirPath, true)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func mkdtemp(String)

public static func mkdtemp(prefix: String): String

功能: 创建临时目录。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
prefix String - 指定目录路径,命名时需要以"XXXXXX"作为结尾。路径末尾的"XXXXXX"字符串将被替换为随机字符,以创建唯一的目录名。

返回值:

类型 说明
String 返回生成的唯一目录路径。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900015 File exists.
    13900018 Not a directory.
    13900020 Invalid argument.
    13900025 No space left on device.
    13900028 Too many links.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let res = FileIo.mkdtemp(pathDir + "/XXXXXX")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func moveDir(String, String, Int32)

public static func moveDir(src: String, dest: String, mode!: Int32 = 0): Unit

功能: 移动源目录至目标路径下。

说明:

该接口不支持在分布式文件路径下操作。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
src String - 源文件夹的应用沙箱路径。
dest String - 目标文件夹的应用沙箱路径。
mode Int32 0 命名参数。 移动模式,默认值为0。
- mode为0,目录级别抛异常。若目标目录下存在与源目录名冲突的非空目录,则抛出异常。
- mode为1,文件级别抛异常。目标目录下存在与源目录名冲突的目录,若冲突目录下存在同名文件,则抛出异常。源目录下未冲突的文件全部移动至目标目录下,目标目录下未冲突文件将继续保留,且冲突文件信息将在抛出异常的data属性中以Array<ConflictFiles>形式提供。
-  mode为2,文件级别强制覆盖。目标目录下存在与源目录名冲突的目录,若冲突目录下存在同名文件,则强制覆盖冲突目录下所有同名文件,未冲突文件将继续保留。
-  mode为3,目录级别强制覆盖。移动源目录至目标目录下,目标目录下移动的目录内容与源目录完全一致。若目标目录下存在与源目录名冲突的目录,该目录下的所有原始文件将被删除。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900015 File exists.
    13900016 Cross-device link.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900028 Too many links.
    13900032 Directory not empty.
    13900033 Too many symbolic links encountered.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    // move directory from srcPath to destPath
    let srcPath = pathDir + "/srcDir/"
    let destPath = pathDir + "/destDir/"
    FileIo.moveDir(srcPath, destPath, mode: 1)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func moveFile(String, String, Int32)

public static func moveFile(src: String, dest: String, mode!: Int32 = 0): Unit

功能: 移动文件。

说明:

该接口不支持在分布式文件路径下操作。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
src String - 源文件夹的应用沙箱路径。
dest String - 目标文件夹的应用沙箱路径。
mode Int32 0 命名参数。 移动模式。若mode为0,移动位置存在同名文件时,强制移动覆盖。若mode为1,移动位置存在同名文件时,抛出异常。默认为0。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900015 File exists.
    13900016 Cross-device link.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900028 Too many links.
    13900032 Directory not empty.
    13900033 Too many symbolic links encountered.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let srcPath = pathDir + "/srcDir/"
    let destPath = pathDir + "/destDir/"
    FileIo.moveFile(srcPath, destPath, mode: 0)
    Hilog.info(0, "test", "move file succeed", "")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func open(String, Int64)

public static func open(path: String, mode!: Int64 = OpenMode.READ_ONLY): File

功能: 打开文件或目录。支持使用URI打开文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 打开文件或目录的应用沙箱路径或URI。
mode Int64 OpenMode.READ_ONLY 命名参数。 打开文件或目录的选项,必须指定如下选项中的一个,默认以只读方式打开:
- OpenMode.READ_ONLY(0o0):只读打开。
- OpenMode.WRITE_ONLY(0o1):只写打开。
- OpenMode.READ_WRITE(0o2):读写打开。
给定如下功能选项,以按位或的方式追加,默认不给定任何额外选项:
- OpenMode.CREATE(0o100):若文件不存在,则创建文件。
- OpenMode.TRUNC(0o1000):如果文件存在且文件具有写权限,则将其长度裁剪为零。
- OpenMode.APPEND(0o2000):以追加方式打开,后续写将追加到文件末尾。
- OpenMode.NONBLOCK(0o4000):如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。
- OpenMode.DIR(0o200000):如果path不指向目录,则出错。不允许附加写权限。
- OpenMode.NOFOLLOW(0o400000):如果path指向符号链接,则出错。
- OpenMode.SYNC(0o4010000):以同步IO的方式打开文件。

返回值:

类型 说明
File 打开的File对象。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900006 No such device or address.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900015 File exists.
    13900017 No such device.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900022 Too many open files.
    13900023 Text file busy.
    13900024 File too large.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900029 Resource deadlock would occur.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900034 Operation would block.
    13900038 Value too large for defined data type.
    13900041 Quota exceeded.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.READ_WRITE | OpenMode.CREATE))
    Hilog.info(0, "test", "open file success, file fd: ${file.fd.toString()}", "")
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func read(Int32, Array<Byte>, ReadOptions)

public static func read(fd: Int32, buffer: Array<Byte>, options!: ReadOptions = ReadOptions()): Int64

功能: 从文件读取数据。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
fd Int32 - 已打开的文件描述符。
buffer Array<Byte> - 用于保存读取到的文件数据的缓冲区。
options ReadOptions ReadOptions() 命名参数。 支持如下选项:
- offset,?Int64类型,表示期望读取文件的位置。默认从当前位置开始读。
- length,?UIntNative类型,表示期望读取数据的长度。默认缓冲区长度。

返回值:

类型 说明
Int64 返回实际读取的数据长度(单位:字节)。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900034 Operation would block.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.READ_WRITE | OpenMode.CREATE))
    let buf = Array<Byte>(4096, repeat: 0)
    FileIo.read(file.fd, buf)
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func readLines(String, Options)

public static func readLines(filePath: String, options!: Options = Options()): ReaderIterator

功能: 逐行读取文件的文本内容。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
filePath String - 文件的应用沙箱路径。
options Options Options() 命名参数。 可选项。支持以下选项:
- encoding,String类型,当数据是 String 类型时有效,表示数据的编码方式,默认 "utf-8",仅支持 "utf-8"。

返回值:

类型 说明
ReaderIterator 返回文件读取迭代器。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900012 Permission denied.
    13900015 File exists.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900022 Too many open files.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900041 Quota exceeded.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let options: Options = Options(encoding: "utf-8")
    let readerIterator = FileIo.readLines(filePath, options: options)
    var result = readerIterator.next()
    while (!result.done) {
        Hilog.info(0, "test", "content: ${result.value}", "")
        result = readerIterator.next()
    }
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func readText(String, ReadTextOptions)

public static func readText(filePath: String, options!: ReadTextOptions = ReadTextOptions()): String

功能: 基于文本方式读取文件(即直接读取文件的文本内容)。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
filePath String - 文件的应用沙箱路径。
options ReadTextOptions ReadTextOptions() 命名参数。 支持如下选项:
- offset,Int64类型,表示期望读取文件的位置。可选,默认从初始位置开始读取。
- length,Int64类型,表示期望读取数据的长度。可选,默认文件长度。
- encoding,String类型,当数据是 String 类型时有效,表示数据的编码方式,默认 "utf-8",仅支持 "utf-8"。

返回值:

类型 说明
String 返回读取文件的内容。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900024 File too large.
    13900025 No space left on device.
    13900034 Operation would block.
    13900041 Quota exceeded.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let str = FileIo.readText(filePath)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func rename(String, String)

public static func rename(oldPath: String, newPath: String): Unit

功能: 重命名文件或目录。

说明:

该接口不支持在分布式文件路径下操作。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
oldPath String - 文件的应用沙箱原路径。
newPath String - 文件的应用沙箱新路径。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900015 File exists.
    13900016 Cross-device link.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900025 No space left on device.
    13900027 Read-only file system.
    13900028 Too many links.
    13900032 Directory not empty.
    13900033 Too many symbolic links encountered.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let srcFile = pathDir + "/test.txt"
    let dstFile = pathDir + "/new.txt"
    FileIo.rename(srcFile, dstFile)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func rmdir(String)

public static func rmdir(path: String): Unit

功能: 删除目录及其所有子目录和文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 目录的应用沙箱路径。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900018 Not a directory.
    13900020 Invalid argument.
    13900027 Read-only file system.
    13900030 File name too long.
    13900032 Directory not empty.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let dirPath = pathDir + "/testDir"
    FileIo.rmdir(dirPath)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func stat(Int32)

public static func stat(file: Int32): Stat

功能: 获取文件或目录详细属性信息。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
file Int32 - 已打开的文件描述符fd。

返回值:

类型 说明
Stat 表示文件或目录的具体信息。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900030 File name too long.
    13900031 Function not implemented.
    13900033 Too many symbolic links encountered.
    13900038 Value too large for defined data type.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let dirPath = pathDir + "/testDir"
    let file = FileIo.open(dirPath)
    FileIo.stat(file.fd)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func stat(String)

public static func stat(file: String): Stat

功能: 获取文件或目录详细属性信息。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
file String - 文件或目录的应用沙箱路径path、URI。

返回值:

类型 说明
Stat 表示文件或目录的具体信息。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900030 File name too long.
    13900031 Function not implemented.
    13900033 Too many symbolic links encountered.
    13900038 Value too large for defined data type.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let dirPath = pathDir + "/testDir"
    FileIo.stat(dirPath)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func truncate(String, Int64)

public static func truncate(file: String, len!: Int64 = 0): Unit

功能: 截断文件内容。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
file String - 文件的应用沙箱路径。
len Int64 0 命名参数。 文件截断后的长度(单位:字节)。默认为0。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900023 Text file busy.
    13900024 File too large.
    13900027 Read-only file system.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let len: Int64 = 5
    FileIo.truncate(filePath, len: len)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func truncate(Int32, Int64)

public static func truncate(file: Int32, len!: Int64 = 0): Unit

功能: 截断文件内容。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
file Int32 - 已打开的文件描述符fd。
len Int64 0 命名参数。 文件截断后的长度(单位:字节)。默认为0。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900012 Permission denied.
    13900013 Bad address.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900023 Text file busy.
    13900024 File too large.
    13900027 Read-only file system.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let len: Int64 = 5
    let file  = FileIo.open(filePath, mode: OpenMode.READ_WRITE)
    FileIo.truncate(file.fd, len: len)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func unlink(String)

public static func unlink(path: String): Unit

功能: 删除文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 文件的应用沙箱路径。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900011 Out of memory.
    13900012 Permission denied.
    13900013 Bad address.
    13900014 Device or resource busy.
    13900018 Not a directory.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900027 Read-only file system.
    13900030 File name too long.
    13900033 Too many symbolic links encountered.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    FileIo.unlink(filePath)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func utimes(String, Float64)

public static func utimes(path: String, mtime: Float64): Unit

功能: 更改文件上次修改该文件的时间。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 文件的应用沙箱路径。
mtime Float64 - 待更新的时间戳。自1970年1月1日起至目标时间的毫秒数。仅支持更改上次修改该文件的时间属性。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900002 No such file or directory.
    13900012 Permission denied.
    13900020 Invalid argument.
    13900027 Read-only file system.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import std.time.DateTime
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    FileIo.write(file.fd, "test data")
    FileIo.close(file)
    FileIo.utimes(filePath, Float64(DateTime.UnixEpoch.second))
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func write(Int32, Array<Byte>, WriteOptions)

public static func write(fd: Int32, buffer: Array<Byte>, options!: WriteOptions = WriteOptions()): Int64

功能: 将数据写入文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
fd Int32 - 已打开的文件描述符。
buffer Array<Byte> - 待写入文件的数据,来自缓冲区。
options WriteOptions WriteOptions() 命名参数。 支持如下选项:
- offset,?Int64类型,表示期望写入文件的位置。可选,默认从当前位置开始写。
- length,?UIntNative类型,表示期望写入数据的长度。可选,默认缓冲区长度。
- encoding,String类型,当数据是String类型时有效,表示数据的编码方式,默认 "utf-8"。当前仅支持 "utf-8"。

返回值:

类型 说明
Int64 返回实际写入的数据长度(单位:字节)。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900020 Invalid argument.
    13900024 File too large.
    13900025 No space left on device.
    13900034 Operation would block.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    let str = "hello, world"
    let writeLen = FileIo.write(file.fd, str.toArray())
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

static func write(Int32, String, WriteOptions)

public static func write(fd: Int32, buffer: String, options!: WriteOptions = WriteOptions()): Int64

功能: 将数据写入文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
fd Int32 - 已打开的文件描述符。
buffer String - 待写入文件的数据,来自字符串。
options WriteOptions WriteOptions() 命名参数。 支持如下选项:
- offset,?Int64类型,表示期望写入文件的位置。可选,默认从当前位置开始写。
- length,?UIntNative类型,表示期望写入数据的长度。可选,默认缓冲区长度。
- encoding,String类型,当数据是String类型时有效,表示数据的编码方式,默认 "utf-8"。当前仅支持 "utf-8"。

返回值:

类型 说明
Int64 返回实际写入的数据长度(单位:字节)。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900020 Invalid argument.
    13900024 File too large.
    13900025 No space left on device.
    13900034 Operation would block.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let file = FileIo.open(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    let str = "hello, world"
    let writeLen = FileIo.write(file.fd, str)
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

class Filter

public class Filter {
    public var suffix: Array<String>
    public var displayName: Array<String>
    public var mimeType: Array<String>
    public var fileSizeOver:?Int64
    public var lastModifiedAfter:?Float64
    public var excludeMedia: Bool
    public init(
        suffix!: Array<String> = Array<String>(),
        displayName!: Array<String> = Array<String>(),
        mimeType!: Array<String> = Array<String>(),
        fileSizeOver!: ?Int64 = None,
        lastModifiedAfter!: ?Float64 = None,
        excludeMedia!: Bool = false
    )
}

功能: 文件过滤配置项,支持listFile接口使用。其中mimeType与excludeMedia过滤暂不支持。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var displayName

public var displayName: Array<String>

功能: 文件名模糊匹配,各个关键词OR关系。当前仅支持通配符*。

类型: Array<String>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var excludeMedia

public var excludeMedia: Bool

功能: 是否排除Media中已有的文件。true:排除Media中已有的文件;false:不排除Media中已有的文件。预留字段,暂不支持使用。

类型: Bool

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var fileSizeOver

public var fileSizeOver:?Int64

功能: 文件大小匹配,大于指定大小的文件。

类型: ?Int64

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var lastModifiedAfter

public var lastModifiedAfter:?Float64

功能: 文件最近修改时间匹配,在指定时间点及之后的文件。

类型: ?Float64

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var mimeType

public var mimeType: Array<String>

功能: mime类型完全匹配,各个关键词OR关系。预留字段,暂不支持使用。

类型: Array<String>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var suffix

public var suffix: Array<String>

功能: 文件后缀名完全匹配,各个关键词OR关系。

类型: Array<String>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

init(Array<String>, Array<String>, Array<String>, ?Int64, ?Float64, Bool)

public init(
    suffix!: Array<String> = Array<String>(),
    displayName!: Array<String> = Array<String>(),
    mimeType!: Array<String> = Array<String>(),
    fileSizeOver!: ?Int64 = None,
    lastModifiedAfter!: ?Float64 = None,
    excludeMedia!: Bool = false
)

功能: 构造Filter对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
suffix Array<String> Array<String>() 命名参数。 文件后缀名完全匹配,各个关键词OR关系。
displayName Array<String> Array<String>() 命名参数。 文件名模糊匹配,各个关键词OR关系。当前仅支持通配符*。
mimeType Array<String> Array<String>() 命名参数。 mime类型完全匹配,各个关键词OR关系。预留字段,暂不支持使用。
fileSizeOver ?Int64 None 命名参数。 文件大小匹配,大于指定大小的文件。
lastModifiedAfter ?Float64 None 命名参数。 文件最近修改时间匹配,在指定时间点及之后的文件。
excludeMedia Bool false 命名参数。 是否排除Media中已有的文件。true:排除Media中已有的文件;false:不排除Media中已有的文件。预留字段,暂不支持使用。

异常:

class ListFileOptions

public class ListFileOptions {
    public var recursion: Bool
    public var listNum: Int32
    public var filter: Filter
    public init(
        recursion!: Bool = false,
        listNum!: Int32 = 0,
        filter!: Filter = Filter()
    )
}

功能: 可选项类型,支持listFile接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var filter

public var filter: Filter

功能: 文件过滤配置项。

类型: Filter

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var listNum

public var listNum: Int32

功能: 列出文件名数量。当设置0时,列出所有文件。

类型: Int32

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var recursion

public var recursion: Bool

功能: 是否递归子目录下文件名。当recursion为false时,返回当前目录下满足过滤要求的文件名及目录名。当recursion为true时,返回此目录下所有满足过滤要求的文件的相对路径(以/开头)。

类型: Bool

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

init(Bool, Int32, Filter)

public init(
    recursion!: Bool = false,
    listNum!: Int32 = 0,
    filter!: Filter = Filter()
)

功能: 构造ListFileOptions对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
recursion Bool false 命名参数。 是否递归子目录下文件名。可选,默认为false。当recursion为false时,返回当前目录下满足过滤要求的文件名及目录名。当recursion为true时,返回此目录下所有满足过滤要求的文件的相对路径(以/开头)。
listNum Int32 0 命名参数。 列出文件名数量。可选,当设置0时,列出所有文件,默认为0。
filter Filter Filter() 命名参数。 文件过滤配置项。 可选,设置过滤条件。

class OpenMode

public class OpenMode {
    public static const READ_ONLY: Int64 = 0o0
    public static const WRITE_ONLY: Int64 = 0o1
    public static const READ_WRITE: Int64 = 0o2
    public static const CREATE: Int64 = 0o100
    public static const TRUNC: Int64 = 0o1000
    public static const APPEND: Int64 = 0o2000
    public static const NONBLOCK: Int64 = 0o4000
    public static const DIR: Int64 = 0o200000
    public static const NOFOLLOW: Int64 = 0o400000
    public static const SYNC: Int64 = 0o4010000
}

功能: open接口flags参数常量。文件打开标签。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const APPEND

public static const APPEND: Int64 = 0o2000

功能: 以追加方式打开,后续写将追加到文件末尾。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const CREATE

public static const CREATE: Int64 = 0o100

功能: 若文件不存在,则创建文件。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const DIR

public static const DIR: Int64 = 0o200000

功能: 如果path不指向目录,则出错。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const NOFOLLOW

public static const NOFOLLOW: Int64 = 0o400000

功能: 如果path指向符号链接,则出错。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const NONBLOCK

public static const NONBLOCK: Int64 = 0o4000

功能: 如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const READ_ONLY

public static const READ_ONLY: Int64 = 0o0

功能: 只读打开。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const READ_WRITE

public static const READ_WRITE: Int64 = 0o2

功能: 读写打开。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const SYNC

public static const SYNC: Int64 = 0o4010000

功能: 以同步IO的方式打开文件。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const TRUNC

public static const TRUNC: Int64 = 0o1000

功能: 如果文件存在且以只写或读写的方式打开,则将其长度裁剪为零。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

static const WRITE_ONLY

public static const WRITE_ONLY: Int64 = 0o1

功能: 只写打开。

类型: Int64

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

class Options

public open class Options {
    public var encoding: String
    public init(
        encoding!: String = "utf-8"
    )
}

功能: 可选项类型,支持readLines接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var encoding

public var encoding: String

功能: 文件编码方式。

类型: String

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

init(String)

public init(
    encoding!: String = "utf-8"
)

功能: 构造Options对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
encoding String "utf-8" 命名参数。 文件编码方式。可选项。

class RandomAccessFile

public class RandomAccessFile {}

功能: 随机读写文件流。在调用RandomAccessFile的方法前,需要先通过createRandomAccessFile方法来构建一个RandomAccessFile实例。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop fd

public prop fd: Int32

功能: 打开的文件描述符。

类型: Int32

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop filePointer

public prop filePointer: Int64

功能: RandomAccessFile对象的偏置指针。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

func close()

public func close(): Unit

功能: 关闭RandomAccessFile对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let randomAccessFile = FileIo.createRandomAccessFile(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    randomAccessFile.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func read(Array<Byte>, ReadOptions)

public func read(buffer: Array<Byte>, options!: ReadOptions = ReadOptions()): Int64

功能: 从文件读取数据。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
buffer Array<Byte> - 用于读取文件的缓冲区。
options ReadOptions ReadOptions() 命名参数。 支持如下选项:
- length,?UIntNative类型,表示期望读取数据的长度。可选,默认缓冲区长度。
- offset,?Int64类型,表示期望读取文件的位置。可选,默认从当前位置开始读。

返回值:

类型 说明
Int64 实际读取的长度。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900034 Operation would block.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let file = FileIo.open(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    let randomAccessFile = FileIo.createRandomAccessFile(file)
    let length: Int64 = 4096
    let arrayBuffer = Array<Byte>(length, repeat: 0)
    let readLength = randomAccessFile.read(arrayBuffer)
    randomAccessFile.close()
    FileIo.close(file)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func setFilePointer(Int64)

public func setFilePointer(filePointer: Int64): Unit

功能: 设置文件偏移指针。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
filePointer Int64 - RandomAccessFile对象的偏移指针。

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let randomAccessFile = FileIo.createRandomAccessFile(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    randomAccessFile.setFilePointer(1)
    randomAccessFile.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func write(String, WriteOptions)

public func write(buffer: String, options!: WriteOptions = WriteOptions()): Int64

功能: 将数据写入文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
buffer String - 待写入文件的数据,可来自字符串。
options WriteOptions WriteOptions() 命名参数。 支持如下选项:
- length,?UIntNative类型,表示期望写入数据的长度。默认缓冲区长度。
- offset,?Int64类型,表示期望写入文件的位置。可选,默认从当前位置开始写。
- encoding,String类型,当数据是String类型时有效,表示数据的编码方式,默认"utf-8"。仅支持"utf-8"。

返回值:

类型 说明
Int64 实际写入的长度。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900020 Invalid argument.
    13900024 File too large.
    13900025 No space left on device.
    13900034 Operation would block.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let randomAccessFile = FileIo.createRandomAccessFile(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    let option = WriteOptions(length: 5, offset: 5)
    let bytesWritten = randomAccessFile.write("hello, world", options: option)
    randomAccessFile.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func write(Array<Byte>, WriteOptions)

public func write(buffer: Array<Byte>, options!: WriteOptions = WriteOptions()): Int64

功能: 将数据写入文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
buffer Array<Byte> - 待写入文件的数据,可来自缓冲区。
options WriteOptions WriteOptions() 命名参数。 支持如下选项:
- length,?UIntNative类型,表示期望写入数据的长度。默认缓冲区长度。
- offset,?Int64类型,表示期望写入文件的位置。可选,默认从当前位置开始写。
- encoding,String类型,当数据是String类型时有效,表示数据的编码方式,默认"utf-8"。仅支持"utf-8"。

返回值:

类型 说明
Int64 实际写入的长度。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900020 Invalid argument.
    13900024 File too large.
    13900025 No space left on device.
    13900034 Operation would block.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let randomAccessFile = FileIo.createRandomAccessFile(filePath, mode: (OpenMode.CREATE | OpenMode.READ_WRITE))
    let option = WriteOptions(length: 5, offset: 5)
    let arr: Array<UInt8> = [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
    let bytesWritten = randomAccessFile.write(arr, options: option)
    randomAccessFile.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

class RandomAccessFileOptions

public class RandomAccessFileOptions {
    public var start: Option<Int64>
    public var end: Option<Int64>
    public init(
        start!: Option<Int64> = None,
        end!: Option<Int64> = None
    )
}

功能: 可选项类型,支持 createRandomAccessFile 接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var end

public var end: Option<Int64>

功能: 表示期望读取结束的位置,单位为字节。可选,默认文件末尾。

类型: Option<Int64>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var start

public var start: Option<Int64>

功能: 表示期望读取文件的位置,单位为字节。可选,默认从当前位置开始读。

类型: Option<Int64>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

init(Option<Int64>, Option<Int64>)

public init(
    start!: Option<Int64> = None,
    end!: Option<Int64> = None
)

功能: 构造RandomAccessFileOptions对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
start Option<Int64> None 命名参数。 表示期望读取文件的位置,单位为字节。可选,默认从当前位置开始读。
end Option<Int64> None 命名参数。 表示期望读取结束的位置,单位为字节。可选,默认文件末尾。

class ReaderIterator

public class ReaderIterator {}

功能: 文件读取迭代器。在调用ReaderIterator的方法前,需要先通过readLines方法来构建一个ReaderIterator实例。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

func next()

public func next(): ReaderIteratorResult

功能: 获取迭代器下一项内容。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
ReaderIteratorResult 文件读取迭代器返回结果。

异常:

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"
    let options: Options = Options(encoding: "utf-8")
    let readerIterator = FileIo.readLines(filePath, options: options)
    var result = readerIterator.next()
    while (!result.done) {
        Hilog.info(0, "test", "content: ${result.value}", "")
        result = readerIterator.next()
    }
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

class ReaderIteratorResult

public class ReaderIteratorResult {
    public var done: Bool
    public var value: String
}

功能: 文件读取迭代器返回结果,支持ReaderIterator接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var done

public var done: Bool

功能: 迭代器是否已完成迭代。true:已完成迭代;false:未完成迭代。

类型: Bool

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var value

public var value: String

功能: 逐行读取的文件文本内容。

类型: String

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

class ReadOptions

public open class ReadOptions {
    public var offset: Option<Int64>
    public var length: Option<UIntNative>
    public init(
        offset!: Option<Int64> = None,
        length!: Option<UIntNative> = None
    )
}

功能: 可选项类型,支持read接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var length

public var length: Option<UIntNative>

功能: 期望读取数据的长度,单位为字节。

类型: Option<UIntNative>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var offset

public var offset: Option<Int64>

功能: 期望读取文件位置,单位为字节(基于当前filePointer加上offset的位置)。

类型: Option<Int64>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

init(Option<Int64>, Option<UIntNative>)

public init(
    offset!: Option<Int64> = None,
    length!: Option<UIntNative> = None
)

功能: 构造ReadOptions对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
offset Option<Int64> None 命名参数。 期望读取文件位置,单位为字节(基于当前filePointer加上offset的位置)。可选,默认从偏移指针(filePointer)开始读。
length Option<UIntNative> None 命名参数。 期望读取数据的长度,单位为字节。可选,默认缓冲区长度。

class ReadTextOptions

public class ReadTextOptions <: ReadOptions {
    public var encoding: String
    public init(
        offset!: Option<Int64> = None,
        length!: Option<UIntNative> = None,
        encoding!: String = "utf-8"
    )
}

功能: 可选项类型,支持readText接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

父类型:

var encoding

public var encoding: String

功能: 当数据是 String 类型时有效,表示数据的编码方式,仅支持 'utf-8'。

类型: String

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

init(Option<Int64>, Option<UIntNative>, String)

public init(
    offset!: Option<Int64> = None,
    length!: Option<UIntNative> = None,
    encoding!: String = "utf-8"
)

功能: 构造ReadOptions对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
offset Option<Int64> None 命名参数。 期望读取文件的位置,单位为字节。可选,默认从当前位置开始读取。
length Option<UIntNative> None 命名参数。 期望读取数据的长度,单位为字节。可选,默认文件长度。
encoding String "utf-8" 命名参数。 当数据是 String 类型时有效,表示数据的编码方式,默认 'utf-8',仅支持 'utf-8'。

class Stat

public class Stat {}

功能: 文件具体信息。在调用Stat的方法前,需要先通过FileIo.stat()方法来构建一个Stat实例。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop atime

public prop atime: Int64

功能: 上次访问该文件的时间,表示距1970年1月1日0时0分0秒的秒数。

注意:目前用户数据分区默认以“noatime”方式挂载,atime更新被禁用。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop ctime

public prop ctime: Int64

功能: 最近改变文件状态的时间,表示距1970年1月1日0时0分0秒的秒数。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop gid

public prop gid: Int64

功能: 文件所有组的ID。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop ino

public prop ino: Int64

功能: 标识该文件。通常同设备上的不同文件的INO不同。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop mode

public prop mode: Int64

功能: 表示文件权限,各特征位的含义如下:

说明:

  • 以下值为八进制,取得的返回值为十进制,请换算后查看。

  • 0o400:用户读。对于普通文件,所有者可读取文件;对于目录,所有者可读取目录项。

  • 0o200:用户写。对于普通文件,所有者可写入文件;对于目录,所有者可创建/删除目录项。

  • 0o100:用户执行。对于普通文件,所有者可执行文件;对于目录,所有者可在目录中搜索给定路径名。

  • 0o040:用户组读。对于普通文件,所有用户组可读取文件;对于目录,所有用户组可读取目录项。

  • 0o020:用户组写。对于普通文件,所有用户组可写入文件;对于目录,所有用户组可创建/删除目录项。

  • 0o010:用户组执行。对于普通文件,所有用户组可执行文件;对于目录,所有用户组是否可在目录中搜索给定路径名。

  • 0o004:其他读。对于普通文件,其余用户可读取文件;对于目录,其他用户组可读取目录项。

  • 0o002:其他写。对于普通文件,其余用户可写入文件;对于目录,其他用户组可创建/删除目录项。

  • 0o001:其他执行。对于普通文件,其余用户可执行文件;对于目录,其他用户组可在目录中搜索给定路径名。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop mtime

public prop mtime: Int64

功能: 上次修改该文件的时间,表示距1970年1月1日0时0分0秒的秒数。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop size

public prop size: Int64

功能: 文件的大小,以字节为单位。仅对普通文件有效。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

prop uid

public prop uid: Int64

功能: 文件所有者的ID。

类型: Int64

读写能力: 只读

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

func isBlockDevice()

public func isBlockDevice(): Bool

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

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
Bool 表示文件是否是块特殊设备。true:是块特殊设备;false:不是块特殊设备。

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let isBLockDevice = FileIo.stat(filePath).isBlockDevice()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func isCharacterDevice()

public func isCharacterDevice(): Bool

功能: 判断文件是否为字符特殊文件。字符特殊设备支持随机访问,且访问时无缓存。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
Bool 表示文件是否是字符特殊设备。true:是字符特殊设备;false:不是字符特殊设备。

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let isCharacterDevice = FileIo.stat(filePath).isCharacterDevice()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func isDirectory()

public func isDirectory(): Bool

功能: 判断文件是否为目录。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
Bool 表示文件是否是目录。true:是目录;false:不是目录。

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let dirPath = pathDir + "/test"
    let isDirectory = FileIo.stat(dirPath).isDirectory()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func isFifo()

public func isFifo(): Bool

功能: 用于判断文件是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
Bool 表示文件是否是 FIFO。true:是FIFO;false:不是FIFO。

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let res = FileIo.stat(filePath).isFifo()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func isFile()

public func isFile(): Bool

功能: 用于判断文件是否是普通文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
Bool 表示文件是否是普通文件。true:是普通文件;false:不是普通文件。

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let isFile = FileIo.stat(filePath).isFile()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func isSocket()

public func isSocket(): Bool

功能: 判断文件是否是套接字。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
Bool 表示文件是否是套接字。true:是套接字;false:不是套接字。

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let isSocket = FileIo.stat(filePath).isSocket()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}
public func isSymbolicLink(): Bool

功能: 判断文件是否为符号链接。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

返回值:

类型 说明
Bool 表示文件是否是符号链接。true:是符号链接;false:不是符号链接。

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let isSymbolicLink = FileIo.stat(filePath).isSymbolicLink()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

class Stream

public class Stream {}

功能: 文件流。在调用Stream的方法前,需要先通过FileIo.createStream方法或者FileIo.fdopenStream来构建一个Stream实例。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

func close()

public func close(): Unit

功能: 关闭文件流。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900025 No space left on device.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let stream = FileIo.createStream(filePath, "r+")
    stream.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func flush()

public func flush(): Unit

功能: 刷新文件流。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900020 Invalid argument.
    13900024 File too large.
    13900025 No space left on device.
    13900034 Operation would block.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let stream = FileIo.createStream(filePath, "r+")
    stream.flush()
    stream.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func read(Array<Byte>, ReadOptions)

public func read(buffer: Array<Byte>, options!: ReadOptions = ReadOptions()): Int64

功能: 从流文件读取数据。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
buffer Array<Byte> - 用于读取文件的缓冲区。
options ReadOptions ReadOptions() 命名参数。 支持如下选项:
- length,?UIntNative类型,表示期望读取数据的长度。可选,默认缓冲区长度。
- offset,?Int64类型,表示期望读取文件的位置。可选,默认从当前位置开始读。

返回值:

类型 说明
Int64 返回读取的结果。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900019 Is a directory.
    13900020 Invalid argument.
    13900034 Operation would block.
    13900042 Unknown error.
    13900044 Network is unreachable.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let stream = FileIo.createStream(filePath, "r+")
    let buf = Array<Byte>(4096, repeat: 0)
    let num = stream.read(buf)
    stream.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func write(String, WriteOptions)

public func write(buffer: String, options!: WriteOptions = WriteOptions()): Int64

功能: 将数据写入流文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
buffer String - 待写入文件的数据,可来自字符串。
options WriteOptions WriteOptions() 命名参数。 支持如下选项:
- length,?UIntNative类型,表示期望写入数据的长度。默认缓冲区长度。
- offset,?Int64类型,表示期望写入文件的位置。可选,默认从当前位置开始写。
- encoding,String类型,当数据是String类型时有效,表示数据的编码方式,默认 "utf-8"。仅支持 "utf-8"。

返回值:

类型 说明
Int64 实际写入的长度。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900020 Invalid argument.
    13900024 File too large.
    13900025 No space left on device.
    13900034 Operation would block.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let stream = FileIo.createStream(filePath, "r+")
    let arr: Array<UInt8> = [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
    let num = stream.write(arr)
    stream.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func write(Array<Byte>, WriteOptions)

public func write(buffer: Array<Byte>, options!: WriteOptions = WriteOptions()): Int64

功能: 将数据写入流文件。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
buffer Array<Byte> - 待写入文件的数据,可来自缓冲区。
options WriteOptions WriteOptions() 命名参数。 支持如下选项:
- length,?UIntNative类型,表示期望写入数据的长度。默认缓冲区长度。
- offset,?Int64类型,表示期望写入文件的位置。可选,默认从当前位置开始写。
- encoding,String类型,当数据是String类型时有效,表示数据的编码方式,默认 "utf-8"。仅支持 "utf-8"。

返回值:

类型 说明
Int64 实际写入的长度。

异常:

  • BusinessException:对应错误码如下表,详见文件管理错误码

    错误码ID 错误信息
    13900001 Operation not permitted.
    13900004 Interrupted system call.
    13900005 I/O error.
    13900008 Bad file descriptor.
    13900010 Try again.
    13900013 Bad address.
    13900020 Invalid argument.
    13900024 File too large.
    13900025 No space left on device.
    13900034 Operation would block.
    13900041 Quota exceeded.
    13900042 Unknown error.

示例:

// index.cj

import kit.CoreFileKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let pathDir = "path/to/file"
    let filePath = pathDir + "/test.txt"  // 请替换正确的文件路径,获取文件路径参考本文使用说明
    let stream = FileIo.createStream(filePath, "r+")
    let arr: Array<UInt8> = [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
    let num = stream.write(arr)
    stream.close()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

class WriteOptions

public class WriteOptions <: Options {
    public var length: Option<UIntNative>
    public var offset: Option<Int64>
    public init(
        length!: Option<UIntNative> = None,
        offset!: Option<Int64> = None,
        encoding!: String = "utf-8"
    )
}

功能: 可选项类型,支持write接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

父类型:

var length

public var length: Option<UIntNative>

功能: 期望写入数据的长度,单位为字节。

类型: Option<UIntNative>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

var offset

public var offset: Option<Int64>

功能: 期望写入文件位置,单位为字节(基于当前filePointer加上offset的位置)。

类型: Option<Int64>

读写能力: 可读写

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

init(Option<UIntNative>, Option<Int64>, String)

public init(
    length!: Option<UIntNative> = None,
    offset!: Option<Int64> = None,
    encoding!: String = "utf-8"
)

功能: 构造WriteOptions对象。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
length Option<UIntNative> None 命名参数。 期望写入数据的长度,单位为字节。可选,默认缓冲区长度。
offset Option<Int64> None 命名参数。 期望写入文件位置,单位为字节(基于当前filePointer加上offset的位置)。可选,默认从偏移指针(filePointer)开始写。
encoding String "utf-8" 命名参数。 当数据是String类型时有效,表示数据的编码方式,默认"utf-8",仅支持"utf-8"。

enum AccessFlagType

public enum AccessFlagType {
    | Local
    | ...
}

功能: 枚举,表示需要校验的文件位置。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

Local

Local

功能: 文件是否在本地。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

enum AccessModeType

public enum AccessModeType {
    | Exist
    | Write
    | Read
    | ReadWrite
    | ...
}

功能: 枚举,表示需要校验的具体权限。若不填,默认校验文件是否存在。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

Exist

Exist

功能: 文件是否存在。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

Read

Read

功能: 文件是否具有读取权限。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

ReadWrite

ReadWrite

功能: 文件是否具有读写权限。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

Write

Write

功能: 文件是否具有写入权限。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

enum WhenceType

public enum WhenceType {
    | SeekSet
    | SeekCur
    | SeekEnd
    | ...
}

功能: 枚举,文件偏移指针相对偏移位置类型,支持lseek接口使用。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

SeekCur

SeekCur

功能: 当前文件偏移指针位置处。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

SeekEnd

SeekEnd

功能: 文件末尾位置处。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22

SeekSet

SeekSet

功能: 文件起始位置处。

系统能力: SystemCapability.FileManagement.File.FileIO

起始版本: 22