---
title: "createFile(named:in:attributes:packer:context:replyHandler:)"
framework: fskit
role: symbol
role_heading: Instance Method
path: "fskit/fsvolume/kerneloffloadediohandler/createfile(named:in:attributes:packer:context:replyhandler:)"
---

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

Creates a new file item and map its disk space.

## Declaration

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

```swift
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

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

- [FSItem.SetAttributesRequest](fskit/fsitem/setattributesrequest.md)
- [FSCreateFileKOIOResult](fskit/fscreatefilekoioresult.md)
- [lookupItem(named:in:packer:context:replyHandler:)](fskit/fsvolume/kerneloffloadediohandler/lookupitem(named:in:packer:context:replyhandler:).md)
- [FSLookupItemKOIOResult](fskit/fslookupitemkoioresult.md)
- [preallocateSpace(for:at:length:flags:packer:context:replyHandler:)](fskit/fsvolume/kerneloffloadediohandler/preallocatespace(for:at:length:flags:packer:context:replyhandler:).md)
- [FSVolume.PreallocateFlags](fskit/fsvolume/preallocateflags.md)
- [FSPreallocateKOIOResult](fskit/fspreallocatekoioresult.md)
