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 -> FSCreateFileKOIOResultParameters
- 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
nilerror. If creation fails, pass the relevant error as the second parameter; FSKit ignores the FSCreateFileKOIOResult instance in this case. For anasyncSwift 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
nilerror. If creation fails, pass the relevant error as the second parameter; FSKit ignores the FSCreateFileKOIOResult instance in this case. For anasyncSwift 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:).