{"id":19534988,"url":"https://github.com/newyaroslav/banana-filesystem-cpp","last_synced_at":"2026-05-18T19:36:32.365Z","repository":{"id":162735293,"uuid":"160490740","full_name":"NewYaroslav/banana-filesystem-cpp","owner":"NewYaroslav","description":"Простая С++ библиотека для работы с файловой системой","archived":false,"fork":false,"pushed_at":"2020-06-28T02:17:59.000Z","size":1390,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-04T18:48:37.010Z","etag":null,"topics":["check-file","cpp","cpp11","create-directory","directories","directory","file","file-library","file-list","file-name","file-size","file-system","filesystem","load-file","remove-directory","save-files"],"latest_commit_sha":null,"homepage":null,"language":"C","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/NewYaroslav.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2018-12-05T09:08:11.000Z","updated_at":"2024-08-23T18:58:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"228c8384-0503-4619-8472-890a31221588","html_url":"https://github.com/NewYaroslav/banana-filesystem-cpp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NewYaroslav/banana-filesystem-cpp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fbanana-filesystem-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fbanana-filesystem-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fbanana-filesystem-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fbanana-filesystem-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NewYaroslav","download_url":"https://codeload.github.com/NewYaroslav/banana-filesystem-cpp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fbanana-filesystem-cpp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273430355,"owners_count":25104479,"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","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"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":["check-file","cpp","cpp11","create-directory","directories","directory","file","file-library","file-list","file-name","file-size","file-system","filesystem","load-file","remove-directory","save-files"],"created_at":"2024-11-11T02:16:47.961Z","updated_at":"2026-05-18T19:36:27.340Z","avatar_url":"https://github.com/NewYaroslav.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"### banana-filesystem-cpp\nПростая header-only С++ библиотека для работы с файловой системой\n\n### Как пользоваться?\n\n* Получить директорию исполняемого файла\n\n```C++\n#include \u003cbanana_filesystem.hpp\u003e\n\n//...\n\n// выведем в консоль директорию исполняемого файла\ncout \u003c\u003c bf::get_current_work_dir() \u003c\u003c endl;\n\n```\n\n* Проверить наличие файла\n\n```C++\n\nif(check_file(\"text.txt\")) {\n\t// файл существует\n} else {\n\t// файла нет\n}\n\n```\n\n* Получить список файлов (или папок)\n\n```C++\n\nstd::vector\u003cstd::string\u003e list_files; // список файлов и прочего\n/* чтобы получить список файлов только в директории \"..//..//\"\n * имена файлов будут без пути \"..//..//\"\n * например: \"test.txt\" \"test2.txt\"\n */\nbf::get_list_files(\"..//..//\", list_files, false); \n\n/* чтобы получить список файлов не только в директории \"..//..//\"\n * но и во всех вложенных папках. Все имена файлов будут начинаться с указанного пути\n * например: \"..//..//test.txt\" \"..//..//test2.txt\" \"..//..//folder//test3.txt\" \"..//..//folder2//test4.txt\"\n * bf::get_list_files(\"..//..//\", list_files);\n * чтобы получить список только папок, и не только в директории \"..//..//\"\n * но и во всех вложенных папках. Все имена папок будут начинаться с указанного пути\n * например: \"..//..//folder//test3.txt\" \"..//..//folder2//test4.txt\"\n * bf::get_list_files(\"..//..//\", list_files, true, true);\n */\n\n// выводим список\nfor(size_t i = 0; i \u003c list_files.size(); ++i) {\n\tstd::cout \u003c\u003c list_files[i] \u003c\u003c std::endl;\n}\n\n```\n\n* Разобрать путь на составляющие\n\n```C++\n\nstring path = \"C:/Users\\\\user/Downloads\";\n\nstd::vector\u003cstd::string\u003e list_dir;\nbf::parse_path(path, list_dir);\n\nfor( auto \u0026 p : list_dir ) cout \u003c\u003c \"-\u003e \" \u003c\u003c p \u003c\u003c endl;\n\n/* на экране будет выведено\t\t\n * -\u003e C:\n * -\u003e Users\n * -\u003e user\n * -\u003e Downloads\n */\n\n```\n\n* Получить расширение файла и установить новое расширение\n\n```C++\n\nstring path = \"C:/Users\\\\user/Downloads\\\\test.dat\";\n// На экран выведет .dat\nstd::cout \u003c\u003c \"file extension (for path): \" \u003c\u003c bf::get_file_extension(path) \u003c\u003c endl;\n// На экран выведет C:/Users/user/Downloads/test.test\nstd::cout \u003c\u003c \"set file extension (for path): \" \u003c\u003c bf::set_file_extension(path, \".test\") \u003c\u003c endl;\n\n```\n\n* Создать директорию\n\n```C++\n\nbf::create_directory(\"..//..//test//test2//test3\");\n\n```\n\n* Удалить директорию\n\n```C++\n\n/* Данная функция удаляет директорию со всеми в ней файлами и папками\n * если параметр is_delete_root_directory true, функция удаляет также корневой каталог (который первым указан в path)\n * иначе функция оставляет паку\n */\nbf::remove_directory(\"..\\\\..\\\\test\", true);\n\n```\n\n* Получить размер файла\n\n```C++\n\nint file_size = bf::get_file_size(\"test.txt\");\nif(file_size \u003e= 0) {\n\t// файл существует и его размер получен\n}\n\n```\n\n* Читать файл целиком в std::string\n\n```C++\n\nstd::string file_data;\nint file_size = bf::load_file(\"test.txt\", file_data);\nif(file_size \u003e= 0) {\n\t// файл существует и его размер получен\n}\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewyaroslav%2Fbanana-filesystem-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnewyaroslav%2Fbanana-filesystem-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewyaroslav%2Fbanana-filesystem-cpp/lists"}