A Swift library providing a unified interface for managing local, iCloud, and remote files (WebDAV, FTP, Dropbox, OneDrive).
FileProvider is a Swift library that provides a unified interface for managing files across local storage, iCloud, and remote services like WebDAV, FTP, Dropbox, and OneDrive. It solves the problem of dealing with multiple file system protocols by offering a single, consistent API for all file operations, from reading and writing to copying and monitoring changes.
iOS and macOS developers building apps that need to interact with various file storage systems, such as file managers, document editors, or cloud storage clients.
Developers choose FileProvider because it abstracts the complexities of different file protocols into a clean, Swifty API, reducing boilerplate code and ensuring consistent behavior across all supported storage backends.
FileManager replacement for Local, iCloud and Remote (WebDAV/FTP/Dropbox/OneDrive) files -- Swift
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a single, consistent Swift interface for local, iCloud, WebDAV, FTP, Dropbox, and OneDrive files, abstracting away protocol complexities as described in the key features.
All functions perform non-blocking async calls to avoid main thread blocking, ensuring smooth UI performance, a core feature highlighted in the README.
Built-in support for NSFileCoordinator handles simultaneous operations, essential for iCloud and shared containers, with isCoordinating property for control.
Offers cancellable operations with progress monitoring for uploads and downloads via delegate methods, though not for LocalFileProvider as noted.
SMB2 is incomplete, Amazon S3 and Google Drive are not implemented, limiting utility for those services, as admitted in the README's feature list.
Dropbox and OneDrive require manual OAuth2 token retrieval using external libraries like OAuthSwift, adding complexity and setup time.
LocalFileProvider does not support the progress delegate method for file operations, which can hinder UI updates for local file tasks.