Contents

createFile(named:in:attributes:packer:context:replyHandler:)

Creates a new file item and map its disk space.

Declaration

func createFile(named name: FSFileName, in directory: FSItem, attributes newAttributes: FSItem.SetAttributesRequest, packer: FSExtentPacker, context: FSContext, replyHandler reply: @escaping  @Sendable (FSCreateFileKOIOResult?, (any Error)?) -> Void)
func createFile(named name: FSFileName, in directory: FSItem, attributes newAttributes: FSItem.SetAttributesRequest, packer: FSExtentPacker, context: FSContext) async throws -> FSCreateFileKOIOResult

Parameters

  • name:

    The new file’s name.

  • directory:

    The directory in which to create the file.

  • newAttributes:

    Attributes to apply to the new file.

  • packer:

    An extent packer you use to pack the file’s allocated disk space.

  • context:

    An object that enables context-aware file system decisions throughout the operation.

Discussion

::::: Swift ::::::::::

  • reply: A block or closure to indicate success or failure. If creation succeeds, pass an instance of FSCreateFileKOIOResult containing the newly-created FSItem, its FSFileName, its FSItem.Attributes, the updated FSItem.Attributes of the parent directory, the volume’s update free space, along with a nil error. If creation fails, pass the relevant error as the second parameter; FSKit ignores the FSCreateFileKOIOResult instance in this case. For an async Swift implementation, there’s no reply handler; simply return the result instance or throw an error.

::::::::::::::::::::

::::: ObjC ::::::::::

  • result: A block or closure to indicate success or failure. If creation succeeds, pass an instance of FSCreateFileKOIOResult containing the newly-created FSItem, its FSFileName, its FSItem.Attributes, the updated FSItem.Attributes of the parent directory, the volume’s update free space, along with a nil error. If creation fails, pass the relevant error as the second parameter; FSKit ignores the FSCreateFileKOIOResult instance in this case. For an async Swift implementation, there’s no reply handler; simply return the result instance or throw an error.

::::::::::::::::::::

Discussion

This method allows the module to opportunistically supply extents, avoiding future calls to blockmapFile(_:offset:length:flags:operationID:packer:replyHandler:). Only perform this technique opportunistically. In particular, don’t perform additional I/O to fetch extent data.

Packing extents in this method requires that attributes defines a size greater than 0.

An implementation that doesn’t supply the extents can ignore the packer and call the corresponding method in the FSVolume.Handler protocol, createItem(named:type:in:attributes:context:replyHandler:).

See Also

Working with items