---
title: "createFile(name:in:attributes:packer:replyHandler:)"
framework: fskit
role: symbol
role_heading: Instance Method
path: "fskit/fsvolumekerneloffloadediooperations/createfile(name:in:attributes:packer:replyhandler:)"
---

# createFile(name:in:attributes:packer:replyHandler:)

Creates a new file item and map its disk space.

## Declaration

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

```swift
func createFile(name: FSFileName, in directory: FSItem, attributes: FSItem.SetAttributesRequest, packer: FSExtentPacker) async throws -> (FSItem, FSFileName)
```

## Parameters

- `name`: The new file’s name.
- `directory`: The directory in which to create the file.
- `attributes`: Attributes to apply to the new file.
- `packer`: An extent packer you use to pack the file’s allocated disk space.
- `reply`: A block or closure to indicate success or failure. If creation succeeds, pass the newly created doc://FSKit/documentation/FSKit/FSItem and its doc://FSKit/documentation/FSKit/FSFileName, along with a nil error. If creation fails, pass the relevant error as the third parameter; FSKit ignores any doc://FSKit/documentation/FSKit/FSItem or doc://FSKit/documentation/FSKit/FSFileName in this case. For an async Swift implementation, there’s no reply handler; instead, return a tuple of the doc://FSKit/documentation/FSKit/FSItem and its doc://FSKit/documentation/FSKit/FSFileName or throw an error.

## Discussion

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.Operations protocol, createItem(named:type:inDirectory:attributes:replyHandler:).
