- π± Cross-Platform Support: Works seamlessly on Android, iOS, macOS, JVM (Windows, macOS, Linux), JS, and WASM
- π― Native Experience: Uses platform-native file pickers for the best user experience
- πͺΆ Lightweight: Minimal dependencies to keep your app fast and lean
- π Rich Integrations: Works with Compose Multiplatform, Coroutines, kotlinx-io, Coil, and more
- π Comprehensive File Operations: Pick files, save documents, access photos, manage directories
- π¨ Image Utilities: Built-in image compression and gallery integration
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:
- FileKit Core: Basic file operations and the
PlatformFile
abstraction - FileKit Dialogs: File pickers and save dialogs
- FileKit Dialogs Compose: Compose Multiplatform integration
- FileKit Coil: Integration with Coil for image loading
FileKit stands on the shoulders of giants. Special thanks to:
- compose-multiplatform-file-picker
- peekaboo
- Calf
- jnafilechooser
- swing-jnafilechooser
- nativefiledialog
- IFileDialogImp
- IntelliJ Community Foundation
- file_picker (flutter)
Made with β€οΈ by Vince