
Library simplifies picking and saving files, directories, and media across different platforms using native APIs. Features include file type selection, multiple picker modes, and easy integration with UI frameworks.
FileKit is trusted by developers building amazing cross-platform applications:
Using FileKit in your project? Let us know!
Visit our documentation to learn more: https://filekit.mintlify.app
Migrate from FileKit 0.8 to 0.10 by following the migration guide.
// build.gradle.kts
dependencies {
implementation("io.github.vinceglb:filekit-core:$version")
implementation("io.github.vinceglb:filekit-dialogs:$version")
implementation("io.github.vinceglb:filekit-dialogs-compose:$version")
implementation("io.github.vinceglb:filekit-coil:$version")
}Follow the installation guide to learn how to install and setup FileKit in your project.
// Pick a file
val file = FileKit.openFilePicker()
// Pick multiple files
val files = FileKit.openFilePicker(mode = FileKitMode.Multiple())
// Pick only images
val imageFile = FileKit.openFilePicker(type = FileKitType.Image)
// Pick a directory
val directory = FileKit.openDirectoryPicker()
// Save a file
val contentToSave = "Hello FileKit!"
val file = FileKit.openFileSaver(suggestedName = "document", extension = "txt")
file?.writeString(contentToSave)
// Work with files
val myFile = FileKit.filesDir / "document.pdf"
println(myFile.name)
println(myFile.size())
myFile.writeString("Hello, World!")
// Image operations
val compressedBytes = FileKit.compressImage(
bytes = imageFile.readBytes(),
quality = 80,
maxWidth = 1024,
maxHeight = 1024
)See the quickstart guide to learn more about the different file operations and utilities available in FileKit.
FileKit is designed to be modular, allowing you to include only what you need:
PlatformFile abstractionFileKit stands on the shoulders of giants. Special thanks to:
Made with β€οΈ by Vince
FileKit is trusted by developers building amazing cross-platform applications:
Using FileKit in your project? Let us know!
Visit our documentation to learn more: https://filekit.mintlify.app
Migrate from FileKit 0.8 to 0.10 by following the migration guide.
// build.gradle.kts
dependencies {
implementation("io.github.vinceglb:filekit-core:$version")
implementation("io.github.vinceglb:filekit-dialogs:$version")
implementation("io.github.vinceglb:filekit-dialogs-compose:$version")
implementation("io.github.vinceglb:filekit-coil:$version")
}Follow the installation guide to learn how to install and setup FileKit in your project.
// Pick a file
val file = FileKit.openFilePicker()
// Pick multiple files
val files = FileKit.openFilePicker(mode = FileKitMode.Multiple())
// Pick only images
val imageFile = FileKit.openFilePicker(type = FileKitType.Image)
// Pick a directory
val directory = FileKit.openDirectoryPicker()
// Save a file
val contentToSave = "Hello FileKit!"
val file = FileKit.openFileSaver(suggestedName = "document", extension = "txt")
file?.writeString(contentToSave)
// Work with files
val myFile = FileKit.filesDir / "document.pdf"
println(myFile.name)
println(myFile.size())
myFile.writeString("Hello, World!")
// Image operations
val compressedBytes = FileKit.compressImage(
bytes = imageFile.readBytes(),
quality = 80,
maxWidth = 1024,
maxHeight = 1024
)See the quickstart guide to learn more about the different file operations and utilities available in FileKit.
FileKit is designed to be modular, allowing you to include only what you need:
PlatformFile abstractionFileKit stands on the shoulders of giants. Special thanks to:
Made with β€οΈ by Vince