{"adoption": {"forks": 160, "observed_at": "2026-08-28T04:04:48.982371+00:00", "stars": 1469}, "canonical_url": "https://ross.abutalabs.com/products/fileoperator", "card": {"archived": false, "artifact_type": "library", "description": "🔥 涵盖了Android系统文件的创建/删除/复制/打开文件(目录)、获取文件(目录)大小、获取常用目录、获取文件名称及后缀、获取MimeType以及MediaStore和SAF的相关操作等常用功能，并且也处理了获取文件Uri/Path的兼容问题、图片压缩和文件选择等功能。", "domain": ["android-tools", "files", "mobile-development"], "enriched": true, "function": ["file-system", "image-processing", "file-upload"], "health_score": 20, "homepage": null, "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["javakam/FileOperator"], "name": "javakam/FileOperator", "platform": ["jvm"], "pushed_at": "2024-03-15T02:29:06+00:00", "repo": "javakam/FileOperator", "stars": 1469, "tags": ["file-operations", "file-picker", "saf", "mediastore", "scoped-storage", "uri-path-compatibility", "image-compression", "fileprovider", "android", "mobile"], "topics": ["fileoperator", "filepicker", "fileutils", "filepath", "fileselector", "fileprovider", "mimetype", "file", "android", "kotlin"], "urls": [], "use_cases": ["handle android scoped storage file operations", "pick files or images in an android app", "get file mime type from path or uri", "convert between file uri and path on android", "compress images before upload on android", "get file or directory size on android", "delete outdated cache files automatically", "open a file with an appropriate android app"], "what_it_is": "An Android file operations library covering file creation/deletion/copying, opening files and directories, MIME types, MediaStore and SAF handling, plus URI/Path compatibility for Android 4.4+. It also bundles a file selector and image compression (based on Luban).", "when_to_avoid": ["developing for platforms other than Android", "you only need a tiny single utility and prefer a minimal dependency", "your project requires a library with frequent maintenance beyond 2024"], "when_to_choose": ["building an Android app that needs broad file I/O across Android 4.4 through Android 11+", "you need MediaStore/SAF compatibility and URI/Path conversion in one library", "you want a built-in file picker with image compression"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/fileoperator", "repo": "javakam/FileOperator", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.982371+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:34:53.248638+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a64cede6ed1c5b2d98fe58fd9874debca56efa4fa88b01d73f0f3b1b9de5ef3d", "fetched_at": "2026-08-28T04:04:48.982371+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javakam/FileOperator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2263, "days_push": 902, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}