
Library facilitates access to platform-specific directories for storing application data, configurations, caches, and logs. Supports multiple methods for different directory types and respects platform-specific standards.
Kotlin Multiplatform AppDirs is a small library which provides a path to the platform dependent special folder/directory.
For example, here are the common paths of the folder/directory that is used to store application specific user data on each platform.
On Mac OS X : /Users/<Account>/Library/Application Support/<AppName>
On Windows XP : C:\Documents and Settings\<Account>\Application Data\Local Settings\<AppAuthor>\<AppName>
On Windows 7 : C:\Users\<Account>\AppData\<AppAuthor>\<AppName>
On Unix/Linux : /home/<account>/.local/share/<AppName>
On Android (internal) : /data/user/<uid>/<packageName>
On Android (external) : /storage/emulated/<storageId>/Android/data/<packageName>
With Kotlin Multiplatform AppDirs, you can get the path depending on the runtime platform with the following code.
val appDirs = AppDirs {
appName = "<AppName>"
appAuthor = "<AppAuthor>"
}
appDirs.getUserDataDir()Kotlin Multiplatform AppDirs is a fork/kotlin multiplatform rewrite of the Java library AppDirs.
AppDirs is loosely based on a python module with the same name.
Please use the issue tracker for bug reports or suggestions.
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("ca.gosyer:kotlin-multiplatform-appdirs:2.0.0")
}
}
}
}Currently, Kotlin Multiplatform AppDirs has the following methods.
Here is a test program and the output on some platforms.
import ca.gosyer.appdirs.AppDirs
fun main() {
val appDirs = AppDirs {
appName = "myapp"
appAuthor = "syer"
extras("1.2.3")
}
println("User data dir: " + appDirs.getUserDataDir())
println("User data dir (roaming): " + appDirs.getUserDataDir(roaming = true))
println("User config dir: " + appDirs.getUserConfigDir())
println("User config dir (roaming): " + appDirs.getUserConfigDir(roaming = true))
println("User cache dir: " + appDirs.getUserCacheDir())
println("User log dir: " + appDirs.getUserLogDir())
println("Site data dir: " + appDirs.getSiteDataDir())
println("Site data dir (multi path): " + appDirs.getSiteDataDir(multiPath = true))
println("Site config dir: " + appDirs.getSiteConfigDir())
println("Site config dir (multi path): " + appDirs.getSiteConfigDir(multiPath = true))
println("Shared dir: " + appDirs.getSharedDir())
}User data dir: /Users/ave/Library/Application Support/syer myapp/1.2.3
User data dir (roaming): /Users/ave/Library/Application Support/syer myapp/1.2.3
User config dir: /Users/ave/Library/Application Support/config/syer myapp/1.2.3
User config dir (roaming): /Users/ave/Library/Application Support/config/syer myapp/1.2.3
User cache dir: /Users/ave/Library/Caches/syer myapp/1.2.3
User log dir: /Users/ave/Library/Logs/syer myapp/1.2.3
Site data dir: /Library/Application Support/syer myapp/1.2.3
Site data dir (multi path): /Library/Application Support/syer myapp/1.2.3
Site config dir: /Library/Preferences/syer myapp/1.2.3
Site config dir (multi path): /Library/Preferences/syer myapp/1.2.3
Shared dir: /Users/Shared/Library/Application Support/syer myapp/1.2.3
User data dir: C:\Users\ave\AppData\Local\syer\myapp\1.2.3
User data dir (roaming): C:\Users\ave\AppData\Roaming\syer\myapp\1.2.3
User config dir: C:\Users\ave\AppData\Local\syer\myapp\1.2.3
User config dir (roaming): C:\Users\ave\AppData\Roaming\syer\myapp\1.2.3
User cache dir: C:\Users\ave\AppData\Local\syer\myapp\Cache\1.2.3
User log dir: C:\Users\ave\AppData\Local\syer\myapp\Logs\1.2.3
Site data dir: C:\ProgramData\syer\myapp\1.2.3
Site data dir (multi path): C:\ProgramData\syer\myapp\1.2.3
Site config dir: C:\ProgramData\syer\myapp\1.2.3
Site config dir (multi path): C:\ProgramData\syer\myapp\1.2.3
Shared dir: C:\ProgramData\syer\myapp\1.2.3
User data dir: /home/ave/.local/share/myapp/1.2.3
User data dir (roaming): /home/ave/.local/share/myapp/1.2.3
User config dir: /home/ave/.config/myapp/1.2.3
User config dir (roaming): /home/ave/.config/myapp/1.2.3
User cache dir: /home/ave/.cache/myapp/1.2.3
User log dir: /home/ave/.local/state/myapp/logs/1.2.3
Site data dir: /usr/local/share/myapp/1.2.3
Site data dir (multi path): /usr/local/share/myapp/1.2.3:/usr/share/myapp/1.2.3
Site config dir: /etc/xdg/myapp/1.2.3
Site config dir (multi path): /etc/xdg/myapp/1.2.3
Shared dir: /srv/myapp/1.2.3
User data dir: /data/user/0/ca.gosyer.appdirsm/app_data/1.2.3
User data dir (roaming): /data/user/0/ca.gosyer.appdirsm/app_data/1.2.3
User config dir: /data/user/0/ca.gosyer.appdirsm/app_config/1.2.3
User config dir (roaming): /data/user/0/ca.gosyer.appdirsm/app_config/1.2.3
User cache dir: /data/user/0/ca.gosyer.appdirsm/cache/1.2.3
User log dir: /data/user/0/ca.gosyer.appdirsm/app_logs/1.2.3
Site data dir: /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/data/1.2.3
Site data dir (multi path): /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/data/1.2.3
Site config dir: /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/config/1.2.3
Site config dir (multi path): /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/config/1.2.3
Shared dir: /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/shared/1.2.3
Please create an issue on the tracker.
Kotlin Multiplatform AppDirs is released under Apache Software License 2.0, the same license of AppDirs.
Kotlin Multiplatform AppDirs is a small library which provides a path to the platform dependent special folder/directory.
For example, here are the common paths of the folder/directory that is used to store application specific user data on each platform.
On Mac OS X : /Users/<Account>/Library/Application Support/<AppName>
On Windows XP : C:\Documents and Settings\<Account>\Application Data\Local Settings\<AppAuthor>\<AppName>
On Windows 7 : C:\Users\<Account>\AppData\<AppAuthor>\<AppName>
On Unix/Linux : /home/<account>/.local/share/<AppName>
On Android (internal) : /data/user/<uid>/<packageName>
On Android (external) : /storage/emulated/<storageId>/Android/data/<packageName>
With Kotlin Multiplatform AppDirs, you can get the path depending on the runtime platform with the following code.
val appDirs = AppDirs {
appName = "<AppName>"
appAuthor = "<AppAuthor>"
}
appDirs.getUserDataDir()Kotlin Multiplatform AppDirs is a fork/kotlin multiplatform rewrite of the Java library AppDirs.
AppDirs is loosely based on a python module with the same name.
Please use the issue tracker for bug reports or suggestions.
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("ca.gosyer:kotlin-multiplatform-appdirs:2.0.0")
}
}
}
}Currently, Kotlin Multiplatform AppDirs has the following methods.
Here is a test program and the output on some platforms.
import ca.gosyer.appdirs.AppDirs
fun main() {
val appDirs = AppDirs {
appName = "myapp"
appAuthor = "syer"
extras("1.2.3")
}
println("User data dir: " + appDirs.getUserDataDir())
println("User data dir (roaming): " + appDirs.getUserDataDir(roaming = true))
println("User config dir: " + appDirs.getUserConfigDir())
println("User config dir (roaming): " + appDirs.getUserConfigDir(roaming = true))
println("User cache dir: " + appDirs.getUserCacheDir())
println("User log dir: " + appDirs.getUserLogDir())
println("Site data dir: " + appDirs.getSiteDataDir())
println("Site data dir (multi path): " + appDirs.getSiteDataDir(multiPath = true))
println("Site config dir: " + appDirs.getSiteConfigDir())
println("Site config dir (multi path): " + appDirs.getSiteConfigDir(multiPath = true))
println("Shared dir: " + appDirs.getSharedDir())
}User data dir: /Users/ave/Library/Application Support/syer myapp/1.2.3
User data dir (roaming): /Users/ave/Library/Application Support/syer myapp/1.2.3
User config dir: /Users/ave/Library/Application Support/config/syer myapp/1.2.3
User config dir (roaming): /Users/ave/Library/Application Support/config/syer myapp/1.2.3
User cache dir: /Users/ave/Library/Caches/syer myapp/1.2.3
User log dir: /Users/ave/Library/Logs/syer myapp/1.2.3
Site data dir: /Library/Application Support/syer myapp/1.2.3
Site data dir (multi path): /Library/Application Support/syer myapp/1.2.3
Site config dir: /Library/Preferences/syer myapp/1.2.3
Site config dir (multi path): /Library/Preferences/syer myapp/1.2.3
Shared dir: /Users/Shared/Library/Application Support/syer myapp/1.2.3
User data dir: C:\Users\ave\AppData\Local\syer\myapp\1.2.3
User data dir (roaming): C:\Users\ave\AppData\Roaming\syer\myapp\1.2.3
User config dir: C:\Users\ave\AppData\Local\syer\myapp\1.2.3
User config dir (roaming): C:\Users\ave\AppData\Roaming\syer\myapp\1.2.3
User cache dir: C:\Users\ave\AppData\Local\syer\myapp\Cache\1.2.3
User log dir: C:\Users\ave\AppData\Local\syer\myapp\Logs\1.2.3
Site data dir: C:\ProgramData\syer\myapp\1.2.3
Site data dir (multi path): C:\ProgramData\syer\myapp\1.2.3
Site config dir: C:\ProgramData\syer\myapp\1.2.3
Site config dir (multi path): C:\ProgramData\syer\myapp\1.2.3
Shared dir: C:\ProgramData\syer\myapp\1.2.3
User data dir: /home/ave/.local/share/myapp/1.2.3
User data dir (roaming): /home/ave/.local/share/myapp/1.2.3
User config dir: /home/ave/.config/myapp/1.2.3
User config dir (roaming): /home/ave/.config/myapp/1.2.3
User cache dir: /home/ave/.cache/myapp/1.2.3
User log dir: /home/ave/.local/state/myapp/logs/1.2.3
Site data dir: /usr/local/share/myapp/1.2.3
Site data dir (multi path): /usr/local/share/myapp/1.2.3:/usr/share/myapp/1.2.3
Site config dir: /etc/xdg/myapp/1.2.3
Site config dir (multi path): /etc/xdg/myapp/1.2.3
Shared dir: /srv/myapp/1.2.3
User data dir: /data/user/0/ca.gosyer.appdirsm/app_data/1.2.3
User data dir (roaming): /data/user/0/ca.gosyer.appdirsm/app_data/1.2.3
User config dir: /data/user/0/ca.gosyer.appdirsm/app_config/1.2.3
User config dir (roaming): /data/user/0/ca.gosyer.appdirsm/app_config/1.2.3
User cache dir: /data/user/0/ca.gosyer.appdirsm/cache/1.2.3
User log dir: /data/user/0/ca.gosyer.appdirsm/app_logs/1.2.3
Site data dir: /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/data/1.2.3
Site data dir (multi path): /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/data/1.2.3
Site config dir: /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/config/1.2.3
Site config dir (multi path): /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/config/1.2.3
Shared dir: /storage/emulated/0/Android/data/ca.gosyer.appdirsm/files/shared/1.2.3
Please create an issue on the tracker.
Kotlin Multiplatform AppDirs is released under Apache Software License 2.0, the same license of AppDirs.