# FileSystemPath class

Namespace: [GrasshopperIO](https://developer.rhino3d.com/api/gh2/namespace/grasshopperio.md) · Assembly: [GrasshopperIO](https://developer.rhino3d.com/api/gh2/assembly/grasshopperio.md)

```cs
public sealed class FileSystemPath : IEquatable<FileSystemPath>
```

An absolute or relative path on a file system. This type re-implements some functionality normally provided by the [Uri](https://learn.microsoft.com/dotnet/api/system.uri) type, but it does so in a reliable, and cross-platform consistent way.

## Constructors

- [FileSystemPath](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/ctor.md): Create a new path from a textual uri.

## Properties

- [ContainsDrive](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/containsdrive.md): Test whether the first element in the folder list probably represents a drive identifier.
- [ContainsFile](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/containsfile.md): Gets whether this path points to a file.
- [Extension](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/extension.md): Gets the file extension, including the dot. This may be an empty string.
- [File](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/file.md): Gets the file name. This may be an empty string is the path represents a folder.
- [Folders](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/folders.md): A list of path (i.e. drive and directory) elements. This does not include the file name or file extension, and the first element may be an empty string in the case the path starts with a directory separator character (i.e. a Unix root). If you modify the elements in this array it may render the path invalid.
- [IsAbsolute](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/isabsolute.md): Gets whether this is an absolute path.
- [IsRelative](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/isrelative.md): Gets whether this is a relative path.

## Methods

- [Equals](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/equals.md): (2 overloads)
- [GetHashCode](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/gethashcode.md)
- [MakeAbsolute](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/makeabsolute.md): (static) Create an absolute path from a relative path and a starting point.
- [MakeRelative](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/makerelative.md): (static) Create a relative path between two absolute paths. If there is no relative path from 'a' to 'b' because they have nothing in common, 'b' is returned.
- [ToString](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/tostring.md): (2 overloads) Create a string representation of this path using the current OSs directory separator symbols.
- [WithFile](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/withfile.md): Set new file data to this path.
- [WithoutFile](https://developer.rhino3d.com/api/gh2/type/grasshopperio.filesystempath/withoutfile.md): Strip the file data from this path.
