{"id":37024027,"url":"https://github.com/objectionary/eo-files","last_synced_at":"2026-01-14T02:53:56.915Z","repository":{"id":38789794,"uuid":"413449383","full_name":"objectionary/eo-files","owner":"objectionary","description":"Input/Output and File System Objects for EO Programming Laguage","archived":true,"fork":false,"pushed_at":"2024-08-07T03:43:11.000Z","size":284,"stargazers_count":13,"open_issues_count":18,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-19T17:28:52.061Z","etag":null,"topics":["eolang","java"],"latest_commit_sha":null,"homepage":"https://www.eolang.org","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/objectionary.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}},"created_at":"2021-10-04T14:08:57.000Z","updated_at":"2025-04-12T02:42:42.000Z","dependencies_parsed_at":"2023-10-04T01:23:53.535Z","dependency_job_id":"aea7c96a-cb0d-4447-8cd6-c21522eb5fc8","html_url":"https://github.com/objectionary/eo-files","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/objectionary/eo-files","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feo-files","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feo-files/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feo-files/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feo-files/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/objectionary","download_url":"https://codeload.github.com/objectionary/eo-files/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feo-files/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["eolang","java"],"created_at":"2026-01-14T02:53:56.364Z","updated_at":"2026-01-14T02:53:56.881Z","avatar_url":"https://github.com/objectionary.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg alt=\"logo\" src=\"https://www.objectionary.com/cactus.svg\" height=\"100px\" /\u003e\n\n[![EO principles respected here](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org)\n[![DevOps By Rultor.com](http://www.rultor.com/b/objectionary/eo-files)](http://www.rultor.com/p/objectionary/eo-files)\n[![We recommend IntelliJ IDEA](https://www.elegantobjects.org/intellij-idea.svg)](https://www.jetbrains.com/idea/)\n\n[![mvn](https://github.com/objectionary/eo-files/actions/workflows/mvn.yml/badge.svg?branch=master)](https://github.com/objectionary/eo-files/actions/workflows/mvn.yml)\n[![PDD status](http://www.0pdd.com/svg?name=objectionary/eo-files)](http://www.0pdd.com/p?name=objectionary/eo-files)\n[![codecov](https://codecov.io/gh/objectionary/eo-files/branch/master/graph/badge.svg)](https://codecov.io/gh/objectionary/eo-files)\n[![Maven Central](https://img.shields.io/maven-central/v/org.eolang/eo-files.svg)](https://maven-badges.herokuapp.com/maven-central/org.eolang/eo-files)\n[![Hits-of-Code](https://hitsofcode.com/github/objectionary/eo-files)](https://hitsofcode.com/view/github/objectionary/eo-files)\n![Lines of code](https://img.shields.io/tokei/lines/github/objectionary/eo-files)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/objectionary/eo-files/blob/master/LICENSE.txt)\n\n**This repository is deprecated! We've moved all EO objects from this repository\nto [objectionary/eo](https://github.com/objectionary/eo).**\n\n[EO](https://www.eolang.org) objects for file system.\n\nThis is how you list all text files in a directory recursively:\n\n```\neach. \u003e @\n  filteredi.\n    QQ.collections.list\n      walk.\n        QQ.fs.dir \"/tmp\"\n        \"**/*\"\n    [f i]\n      and. \u003e @\n        f.is-dir.not\n        matches.\n          compile.\n            QQ.txt.regex\n              \"/.*\\\\.txt$/\"\n          f\n  [f]\n    QQ.io.stdout \u003e @\n      QQ.txt.sprintf \"file: %s\\n\" f\n```\n\nYou are welcome to add more primitives to this lib.\n\nSimple manipulations:\n\n```\n# Make a new object representing a file on disc\nQQ.fs.file \u003e f\n  \"/tmp/foo.txt\"\n\n# Get its name:\nQQ.io.stdout\n  QQ.txt.sprintf\n    \"File name is: %s\"\n    f\n\n# Does it exist?\nf.exists\n\n# Is it a directory?\nf.is-dir\n\n# Touch it, to make sure it exists\nf.touch\n\n# Delete the file:\nf.rm\n\n# Rename/move it:\nf.mv \"/tmp/bar.txt\"\n\n# Get the size of it in bytes:\nf.size \u003e s\n```\n\nReading:\n\n```\n# Read binary content into the \"output,\" in 1024-bytes chunks;\n# the \"memory-as-output\" is an abstract object with one free attribute,\n# which is the memory where the bytes will be stored:\nQQ.fs.file \"/tmp/foo.txt\" \u003e f\nmemory \u003e m\nQQ.io.copied\n  f.as-input\n  QQ.io.memory-as-output m\n  1024\n```\n\nWriting:\n\n```\n# Write binary content, taking it from the \"input\",\n# until input turns into a non-empty \"bytes\"; here the\n# \"mode\" is the same as the mode in POSIX fopen();\n# if the file is absent, it will be created:\nQQ.fs.file \"/tmp/foo.txt\" \u003e f\nQQ.io.copied\n  QQ.io.bytes-as-input\n    \"你好, world!\".as-bytes\n  f.as-output \"w+\"\n```\n\nSmart object to help read content fast:\n\n```\n# This is the entire binary content of the file:\nQQ.fs.content f\n```\n\nDirectories:\n\n```\n# Make an object representing a directory on disc:\nQQ.fs.directory \u003e d\n  \"/tmp\"\n\n# Make it if doesn't exist:\nd.mkdir\n\n# Delete it recursively:\nd.rm-rf\n\n# List all files recursively:\nd.walk \"**/*.txt\"\n```\n\nTemporary files:\n\n```\n# This is a system directory for temporary files:\nQQ.fs.tmpdir \u003e d\n\n# Create an empty temporary file in a directory\nd.tmpfile.@ \u003e f\n```\n\nName manipulations:\n\n```\n# Add path segment to existing file:\nQQ.fs.file \"/tmp\" \u003e f\nf.resolve \"foo.txt\"\n\n# Get directory name:\nQQ.fs.dir-name f\n\n# Get base name (no directory, not extension):\nQQ.fs.base-name f\n\n# Get extension:\nQQ.fs.ext-name f\n```\n\n## How to Contribute\n\nFork repository, make changes, send us a pull request.\nWe will review your changes and apply them to the `master` branch shortly,\nprovided they don't violate our quality standards. To avoid frustration,\nbefore sending us your pull request please run full Maven build:\n\n```bash\n$ mvn clean install -Pqulice\n```\n\nYou will need Maven 3.3+ and Java 8+.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Feo-files","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobjectionary%2Feo-files","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Feo-files/lists"}