{"id":16811551,"url":"https://github.com/harawata/appdirs","last_synced_at":"2025-05-15T07:05:13.695Z","repository":{"id":9895309,"uuid":"11901303","full_name":"harawata/appdirs","owner":"harawata","description":"A small utility that provides cross platform access to the special folders/directories like application data.","archived":false,"fork":false,"pushed_at":"2025-04-11T23:16:38.000Z","size":120,"stargazers_count":203,"open_issues_count":0,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-14T11:12:13.683Z","etag":null,"topics":["appdirs","java","linux","macos","windows"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harawata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-08-05T15:12:45.000Z","updated_at":"2025-04-11T23:16:35.000Z","dependencies_parsed_at":"2023-02-10T06:01:00.597Z","dependency_job_id":"8b981d1f-2f33-4969-a5b0-4901fbd7351b","html_url":"https://github.com/harawata/appdirs","commit_stats":{"total_commits":145,"total_committers":5,"mean_commits":29.0,"dds":0.5862068965517242,"last_synced_commit":"1d8379b49d9cfacfd0ae4a47b853f75b60cf28f3"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harawata%2Fappdirs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harawata%2Fappdirs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harawata%2Fappdirs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harawata%2Fappdirs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harawata","download_url":"https://codeload.github.com/harawata/appdirs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254292040,"owners_count":22046426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appdirs","java","linux","macos","windows"],"created_at":"2024-10-13T10:19:05.965Z","updated_at":"2025-05-15T07:05:08.684Z","avatar_url":"https://github.com/harawata.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"AppDirs\n=======\n\n## Overview\n\n__AppDirs__ is a small java library which provides a path to the platform dependent special folder/directory. \n\nFor example, here are the common paths of the folder/directory that is used to store application specific user data on each platform.\n\nOn Mac OS X : ```/Users/\u003cAccount\u003e/Library/Application Support/\u003cAppName\u003e```  \nOn Windows XP : ```C:\\Documents and Settings\\\u003cAccount\u003e\\Application Data\\Local Settings\\\u003cAppAuthor\u003e\\\u003cAppName\u003e```  \nOn Windows 7 : ```C:\\Users\\\u003cAccount\u003e\\AppData\\\u003cAppAuthor\u003e\\\u003cAppName\u003e```  \nOn Unix/Linux : ```/home/\u003caccount\u003e/.local/share/\u003cAppName\u003e```  \n\nWith __AppDirs__, you can get the path depending on the runtime platform with the following code.\n\n``` java\nAppDirs appDirs = AppDirsFactory.getInstance();\nappDirs.getUserDataDir(\"\u003cAppName\u003e\", null, \"\u003cAppAuthor\u003e\");\n```\n__AppDirs__ is loosely based on [a python module](https://github.com/ActiveState/appdirs) with the same name.  \nPlease use the issue tracker for bug reports or suggestions.\n\n## Requirements\n\n- Java 8 (since 1.3.0)\n- [Java Native Access (JNA)](https://github.com/twall/jna) as its dependency.\n\n## Quickstart\n\n### With a dependency management tool ([Maven](https://maven.apache.org/), [Gradle](https://gradle.org/), etc.)\n\n1. Choose the latest version on the [MvnRepository](https://mvnrepository.com/artifact/net.harawata/appdirs).\n2. From the tabs of dependency management tools, select the one you are using.\n3. Copy the snippet and add it to the dependency list of your project file (`pom.xml`, `build.gradle`, etc.).\n\n### Without a dependency management tool\n\n1. Choose the latest version on the [release page](https://github.com/harawata/appdirs/releases).\n2. Download the `appdirs-(version).jar` file.\n3. You may also need to download [`jna-(version).jar`](https://mvnrepository.com/artifact/net.java.dev.jna/jna) and [`jna-platform-(version).jar`](https://mvnrepository.com/artifact/net.java.dev.jna/jna-platform).\n4. Put all .jar files into the classpath of your application.\n\n## Supported directories\n\nCurrently, __AppDirs__ has the following methods.\n\n- getUserDataDir\n- getUserConfigDir\n- getUserCacheDir\n- getUserLogDir\n- getUserDownloadsDir (since 1.2.2)\n- getSiteDataDir\n- getSiteConfigDir\n- getSharedDir (since 1.1.0)\n\nHere is a test program and the output on some platforms.\n\n```java\nimport net.harawata.appdirs.AppDirs;\nimport net.harawata.appdirs.AppDirsFactory;\n\npublic class AppDirTest {\n  public static void main(String[] args) {\n    AppDirs appDirs = AppDirsFactory.getInstance();\n    System.out.println(\"User data dir: \" + appDirs.getUserDataDir(\"myapp\", \"1.2.3\", \"harawata\"));\n    System.out.println(\"User data dir (roaming): \"\n      + appDirs.getUserDataDir(\"myapp\", \"1.2.3\", \"harawata\", true));\n    System.out.println(\"User config dir: \"\n      + appDirs.getUserConfigDir(\"myapp\", \"1.2.3\", \"harawata\"));\n    System.out.println(\"User config dir (roaming): \"\n      + appDirs.getUserConfigDir(\"myapp\", \"1.2.3\", \"harawata\", true));\n    System.out.println(\"User cache dir: \"\n      + appDirs.getUserCacheDir(\"myapp\", \"1.2.3\", \"harawata\"));\n    System.out.println(\"User log dir: \"\n      + appDirs.getUserLogDir(\"myapp\", \"1.2.3\", \"harawata\"));\n    System.out.println(\"User downloads dir: \"\n      + appDirs.getUserDownloadsDir(\"myapp\", \"1.2.3\", \"harawata\"));\n    System.out.println(\"Site data dir: \"\n      + appDirs.getSiteDataDir(\"myapp\", \"1.2.3\", \"harawata\"));\n    System.out.println(\"Site data dir (multi path): \"\n      + appDirs.getSiteDataDir(\"myapp\", \"1.2.3\", \"harawata\", true));\n    System.out.println(\"Site config dir: \"\n      + appDirs.getSiteConfigDir(\"myapp\", \"1.2.3\", \"harawata\"));\n    System.out.println(\"Site config dir (multi path): \"\n      + appDirs.getSiteConfigDir(\"myapp\", \"1.2.3\", \"harawata\", true));\n    System.out.println(\"Shared dir: \"\n      + appDirs.getSharedDir(\"myapp\", \"1.2.3\", \"harawata\"));\n  }\n}\n```\n\n### Output on Mac OS X (username = ave)\n\n```\nUser data dir: /Users/ave/Library/Application Support/myapp/1.2.3\nUser data dir (roaming): /Users/ave/Library/Application Support/myapp/1.2.3\nUser config dir: /Users/ave/Library/Preferences/myapp/1.2.3\nUser config dir (roaming): /Users/ave/Library/Preferences/myapp/1.2.3\nUser cache dir: /Users/ave/Library/Caches/myapp/1.2.3\nUser log dir: /Users/ave/Library/Logs/myapp/1.2.3\nUser downloads dir: /Users/ave/Downloads/myapp/1.2.3\nSite data dir: /Library/Application Support/myapp/1.2.3\nSite data dir (multi path): /Library/Application Support/myapp/1.2.3\nSite config dir: /Library/Preferences/myapp/1.2.3\nSite config dir (multi path): /Library/Preferences/myapp/1.2.3\nShared dir: /Users/Shared/Library/Application Support/myapp/1.2.3\n```\n- _appAuthor_ parameter is not used on Mac OS X.\n- _roaming_ and _multiPath_ parameters have no effect on Mac OS X.\n\n### Output on Windows 7 (username = ave)\n```\nUser data dir: C:\\Users\\ave\\AppData\\Local\\harawata\\myapp\\1.2.3\nUser data dir (roaming): C:\\Users\\ave\\AppData\\Roaming\\harawata\\myapp\\1.2.3\nUser config dir: C:\\Users\\ave\\AppData\\Local\\harawata\\myapp\\1.2.3\nUser config dir (roaming): C:\\Users\\ave\\AppData\\Roaming\\harawata\\myapp\\1.2.3\nUser cache dir: C:\\Users\\ave\\AppData\\Local\\harawata\\myapp\\Cache\\1.2.3\nUser log dir: C:\\Users\\ave\\AppData\\Local\\harawata\\myapp\\Logs\\1.2.3\nUser downloads dir: C:\\Users\\ave\\Downloads\\harawata\\myapp\\1.2.3\nSite data dir: C:\\ProgramData\\harawata\\myapp\\1.2.3\nSite data dir (multi path): C:\\ProgramData\\harawata\\myapp\\1.2.3\nSite config dir: C:\\ProgramData\\harawata\\myapp\\1.2.3\nSite config dir (multi path): C:\\ProgramData\\harawata\\myapp\\1.2.3\nShared dir: C:\\ProgramData\\harawata\\myapp\\1.2.3\n```\n- Internally calls [SHGetFolderPath](http://msdn.microsoft.com/en-us/library/bb762181%28VS.85%29.aspx) via [Java Native Access (JNA)](https://github.com/twall/jna).\n - Returns CSIDL_LOCAL_APPDATA or CSIDL_APPDATA for user directories.\n - Returns CSIDL_COMMON_APPDATA for site directories.\n - Returns KNOWNFOLDERID `374DE290-123F-4565-9164-39C4925E467B` for user downloads directory. Not supported on pre-Vista OSes.\n- _multiPath_ parameter has no effect on Windows.\n\n### Output on Linux (username = ave, with no XDG environment variables defined)\n```\nUser data dir: /home/ave/.local/share/myapp/1.2.3\nUser data dir (roaming): /home/ave/.local/share/myapp/1.2.3\nUser config dir: /home/ave/.config/myapp/1.2.3\nUser config dir (roaming): /home/ave/.config/myapp/1.2.3\nUser cache dir: /home/ave/.cache/myapp/1.2.3\nUser log dir: /home/ave/.cache/myapp/logs/1.2.3\nUser downloads dir: /home/ave/Downloads/myapp/1.2.3\nSite data dir: /usr/local/share/myapp/1.2.3\nSite data dir (multi path): /usr/local/share/myapp/1.2.3:/usr/share/myapp/1.2.3\nSite config dir: /etc/xdg/myapp/1.2.3\nSite config dir (multi path): /etc/xdg/myapp/1.2.3\nShared dir: /srv/myapp/1.2.3\n```\n\n- __AppDirs__ respects [XDG Base Directory Specification](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) if variables are defined.\n - Returns XDG_DATA_HOME for user data directory.\n - Returns XDG_CONFIG_HOME for user config directory.\n - Returns XDG_CACHE_HOME for user cache directory.\n - Returns XDG_DATA_DIRS for site data directory.\n - Returns XDG_CONFIG_DIRS for site config directory.\n - Returns XDG_DOWNLOAD_DIR for user downloads directory.\n- _appAuthor_ parameter is not used on Unix/Linux.\n- _roaming_ parameter has no effect on Unix/Linux.\n\n## Bug report, feature request, question\n\nPlease create an issue on the [tracker](https://github.com/harawata/appdirs/issues).\n\n## License\n\n__AppDirs__ is released under Apache Software License 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharawata%2Fappdirs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharawata%2Fappdirs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharawata%2Fappdirs/lists"}