{"id":17694622,"url":"https://github.com/bailuk/foc","last_synced_at":"2025-03-30T23:26:28.662Z","repository":{"id":128791049,"uuid":"372199182","full_name":"bailuk/foc","owner":"bailuk","description":"File or content - abstraction for file like objects","archived":false,"fork":false,"pushed_at":"2023-08-10T12:41:27.000Z","size":272,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T05:12:51.102Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bailuk.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2021-05-30T11:41:38.000Z","updated_at":"2021-12-05T17:10:32.000Z","dependencies_parsed_at":"2024-10-24T16:48:48.140Z","dependency_job_id":"5b566f25-cf4f-4a27-bd00-65a653bfad1b","html_url":"https://github.com/bailuk/foc","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bailuk%2Ffoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bailuk%2Ffoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bailuk%2Ffoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bailuk%2Ffoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bailuk","download_url":"https://codeload.github.com/bailuk/foc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246394365,"owners_count":20770112,"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":[],"created_at":"2024-10-24T13:49:17.627Z","updated_at":"2025-03-30T23:26:28.637Z","avatar_url":"https://github.com/bailuk.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Android CI](https://github.com/bailuk/foc/actions/workflows/android.yml/badge.svg)](https://github.com/bailuk/foc/actions/workflows/android.yml) [![Release](https://jitpack.io/v/com.github.bailuk/foc.svg)](https://jitpack.io/#com.github.bailuk/foc)\n\n# foc - file or content\nA java library providing a platform independent abstraction for file like objects. \nIt supports the following types: \n- Unix and Windows filesystems trough [Java File](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html) \n- Android Storage Access Framework - [SAF](https://developer.android.com/guide/topics/providers/document-provider)\n- Android [Assets](https://developer.android.com/reference/android/content/res/AssetManager)\n\n\n## Build\n```bash\nexport ANDROID_SDK_ROOT=/home/user/Android/Sdk\n./gradelw build\n./gradlew publishToMavenLocal\n```\n\n## Integrate into project with [Gradle](https://gradle.org)\n### Add jitpack.io repository\n```gradle\nrepositories {\n    // ...\n    maven { url 'https://jitpack.io' }\n}\n```\n\n### Add dependency\n```gradle\ndependencies {\n    def focVersion = '1.3'\n\n    // all modules\n    implementation \"com.github.bailuk:foc:$focVersion\"\n\n    // foc (core module)\n    // implementation \"com.github.bailuk.foc:foc:$focVersion\"\n\n    // foc-extended (for accessing java resources)\n    // implementation \"com.github.bailuk.foc:foc-android:$focVersion\"\n\n    // foc-android (Android Storage Access Framework SAF)\n    // implementation \"com.github.bailuk.foc:foc-android:$focVersion\"\n}\n```\n\nSee [jitpack.io](http://jitpack.io) for more.\n\n\n## Example\n```java\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.net.Uri;\nimport android.os.Bundle;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\nimport ch.bailu.foc.Foc;\nimport ch.bailu.foc_android.FocAssetFactory;\nimport ch.bailu.foc_android.FocAndroidFactory;\n\npublic class ExampleActivity extends Activity {\n    private int myRequestCode = 42;\n\n    @Override\n    protected void onActivityResult(int requestCode,\n                                    int resultCode,\n                                    Intent data) {\n        if (requestCode == myRequestCode \u0026\u0026 resultCode == Activity.RESULT_OK) {\n                Uri uri = data.getData();\n                Foc saf = new FocAndroidFactory(this).toFoc(uri.toString());\n                printFiles(saf);\n        }\n    }\n\n    @Override\n    public void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        Foc asset = new FocAssetFactory(this).toFoc(\"some/path/to/asset/file_or_directory\");\n        printFiles(asset);\n\n        Foc file = new FocAndroidFactory(this).toFoc(\"/unix/path/to/file_or_directory\");\n        printFiles(file);\n    }\n\n    private void printFiles(Foc foc) {\n        System.out.println(foc.getName());\n\n        if (foc.isFile() \u0026\u0026 foc.canRead()) {\n            InputStream reader = null;\n            try {\n                reader = foc.openR();\n                printToConsole(reader);\n            } catch (IOException e) {\n            } finally {\n                Foc.close(reader);\n            }\n        } else if (foc.isDir()) {\n            foc.foreach(child -\u003e printFiles(child));\n        }\n    }\n\n    private void printToConsole(InputStream reader) throws IOException {\n        StringBuilder builder = new StringBuilder();\n        int c;\n        while ((c = reader.read()) != -1) {\n            builder.append((char) c);\n        }\n        System.out.println(builder);\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbailuk%2Ffoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbailuk%2Ffoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbailuk%2Ffoc/lists"}