<!--
{
  "availability" : [
    "macOS: 15.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "FSKit",
  "identifier" : "/documentation/FSKit/FSItem",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "FSKit"
    ],
    "preciseIdentifier" : "c:objc(cs)FSItem"
  },
  "title" : "FSItem"
}
-->

# FSItem

A distinct object in a file hierarchy, such as a file, directory, symlink, socket, and more.

```
class FSItem
```

## Overview

An `FSItem` is a mostly opaque object, which your file system implementation defines as needed.

The [`FSItem.Attributes`](/documentation/FSKit/FSItem/Attributes) class defines nonatomic properties to support `FSItem` instances.
An [`FSItem.Attributes`](/documentation/FSKit/FSItem/Attributes) instance contains a snapshot of the attributes of an `FSItem` at one point in time.
The [`FSItem.Attributes`](/documentation/FSKit/FSItem/Attributes) properties have no explicit thread safety provisions, since the operations that either get or set these properties enforce thread safety.

You test an attribute’s validity with the the method [`isValid(_:)`](/documentation/FSKit/FSItem/Attributes/isValid(_:)).
If the value is `true` (Swift) or `YES` (Objective-C), it’s safe to use the attribute.

Methods that get or set an item’s attribute use [`FSItem.GetAttributesRequest`](/documentation/FSKit/FSItem/GetAttributesRequest) or [`FSItem.SetAttributesRequest`](/documentation/FSKit/FSItem/SetAttributesRequest), respectively.
Both are subclasses of [`FSItem.Attributes`](/documentation/FSKit/FSItem/Attributes).
An [`FSItem.GetAttributesRequest`](/documentation/FSKit/FSItem/GetAttributesRequest) contains a [`wantedAttributes`](/documentation/FSKit/FSItem/GetAttributesRequest/wantedAttributes) property to indicate the attributes a file system provides for the request.
Similarly, [`FSItem.SetAttributesRequest`](/documentation/FSKit/FSItem/SetAttributesRequest) uses the property [`consumedAttributes`](/documentation/FSKit/FSItem/SetAttributesRequest/consumedAttributes) for a file system to signal back which attributes it successfully used.

`FSItem` is the FSKit equivelant of a vnode in the kernel.
For every FSKit vnode in the kernel, the `FSModule` hosting the volume has an instantiated `FSItem`.

## Topics

### Identifying an item

[`FSItem.Identifier`](/documentation/FSKit/FSItem/Identifier)

The unique identifier for an item.

[`FSItem.ItemType`](/documentation/FSKit/FSItem/ItemType)

An enumeration of item types, such as file, directory, or symbolic link.

### Working with attributes

[`FSItem.Attributes`](/documentation/FSKit/FSItem/Attributes)

Attributes of an item, such as size, creation and modification times, and user and group identifiers.

[`FSItem.GetAttributesRequest`](/documentation/FSKit/FSItem/GetAttributesRequest)

A request to get attributes from an item.

[`FSItem.SetAttributesRequest`](/documentation/FSKit/FSItem/SetAttributesRequest)

A request to set attributes on an item.

### Reclaiming items

[`tryReclaim(_:)`](/documentation/FSKit/FSItem/tryReclaim(_:))

Reclaims the item by executing the given block, if conditions allow.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)