{"id":21348428,"url":"https://github.com/ex-exe/buffercopy","last_synced_at":"2025-07-12T17:32:30.818Z","repository":{"id":61549459,"uuid":"543990286","full_name":"EX-EXE/BufferCopy","owner":"EX-EXE","description":"Copy file and reports read/write progress.","archived":false,"fork":false,"pushed_at":"2023-11-19T01:13:51.000Z","size":139,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-26T11:47:15.767Z","etag":null,"topics":["copy","csharp","file","library","tool"],"latest_commit_sha":null,"homepage":"","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/EX-EXE.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":"2022-10-01T10:48:11.000Z","updated_at":"2023-08-14T18:45:17.000Z","dependencies_parsed_at":"2023-11-18T05:28:05.848Z","dependency_job_id":"2a1f7715-8274-41b4-b349-cc22070cc7d0","html_url":"https://github.com/EX-EXE/BufferCopy","commit_stats":null,"previous_names":["ex-exe/copyfileutility"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/EX-EXE/BufferCopy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EX-EXE%2FBufferCopy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EX-EXE%2FBufferCopy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EX-EXE%2FBufferCopy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EX-EXE%2FBufferCopy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EX-EXE","download_url":"https://codeload.github.com/EX-EXE/BufferCopy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EX-EXE%2FBufferCopy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265025589,"owners_count":23699778,"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":["copy","csharp","file","library","tool"],"created_at":"2024-11-22T02:20:59.533Z","updated_at":"2025-07-12T17:32:30.366Z","avatar_url":"https://github.com/EX-EXE.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BufferCopy / CopyFileUtility\n[![NuGet version](https://badge.fury.io/nu/CopyFileUtility.svg)](https://badge.fury.io/nu/CopyFileUtility)\n[![Push Build](https://github.com/EX-EXE/BufferCopy/actions/workflows/build.yml/badge.svg)](https://github.com/EX-EXE/BufferCopy/actions/workflows/build.yml)\n\nCopy file and reports read/write progress.\n\n| File | Directory |\n|---|---|\n| ![file](https://user-images.githubusercontent.com/114784289/196020067-1673b1cd-a9a2-4193-910d-3549264c4906.gif) | ![dir](https://user-images.githubusercontent.com/114784289/196020076-b3b3b29c-200e-496f-9854-4b44a59745ef.gif) |\n\n\n## Project\n| Name | Type| Description |\n|---|---|---|\n| CopyFileUtility | C# Library [![NuGet version](https://badge.fury.io/nu/CopyFileUtility.svg)](https://badge.fury.io/nu/CopyFileUtility) | Copy Process |\n| BufferCopy | Application | Using CopyFileUtility |\n\n## Quick Start(BufferCopy)\n### File\n```\nBufferCopy.exe File \u003cSrcFile\u003e \u003cDstFile\u003e\n```\n| Param | Description |\n|---|---|\n| SrcFile | Source file path. |\n| DstFile | Destination file path. |\n\n### Directory\n```\nBufferCopy.exe Dir \u003cSrcDir\u003e \u003cDstDir\u003e\n```\n```\nBufferCopy.exe Directory \u003cSrcDir\u003e \u003cDstDir\u003e\n```\n| Param | Description |\n|---|---|\n| SrcDir | Source directory path. |\n| DstDir | Destination directory path. |\n\n## Quick Start(CopyFileUtility)\n### File\n```csharp\nawait CopyFileUtility.CopyFileAsync(\n        string src,\n        string dst,\n        CopyFileOptions option,\n        IProgress\u003cCopyFileProgress\u003e? progress = null,\n        CancellationToken cancellationToken = default);\n```\n| Param | Description |\n|---|---|\n| src | Source file path. |\n| dst | Destination file path. |\n| option | Copy option. |\n\n### Files\n```csharp\nawait CopyFileUtility.CopyFilesAsync(\n        IEnumerable\u003cstring\u003e srcFiles,\n        IEnumerable\u003cstring\u003e dstFiles,\n        CopyFileOptions options,\n        bool throwCopyException = false,\n        IProgress\u003cCopyFilesProgress\u003e? progress = null,\n        CancellationToken cancellationToken = default);\n```\n| Param | Description |\n|---|---|\n| srcFiles | Source files path. |\n| dstFiles | Destination files path. |\n| option | Copy option. |\n| throwCopyException | Throw when an exception occurs during file copying. |\n\n\n### Directory\n```csharp\nawait CopyFileUtility.CopyDirectoryAsync(\n        string src,\n        string dst,\n        System.IO.SearchOption searchOption,\n        CopyFileOptions copyOptions,\n        bool throwCopyException = false,\n        IProgress\u003cCopyFilesProgress\u003e? progress = null,\n        CancellationToken cancellationToken = default);\n```\n```csharp\nawait CopyFileUtility.CopyDirectoryAsync(\n        string src,\n        string dst,\n        Regex?|string? includeSrcPathRegex,\n        Regex?|string? excludeSrcPathRegex,\n        Func\u003cstring, string, string, string\u003e? changePathFunction,\n        System.IO.SearchOption searchOption,\n        CopyFileOptions copyOptions,\n        bool throwCopyException = false,\n        IProgress\u003cCopyFilesProgress\u003e? progress = null,\n        CancellationToken cancellationToken = default);\n```\n| Param | Description |\n|---|---|\n| src | Source directory path. |\n| dst | Destination directory path. |\n| includeSrcPathRegex | Filtering copy targets using regular expressions.(Target all files if null.) |\n| excludeSrcPathRegex | Exclude copy targets using regular expressions.(Do nothing if null.) |\n| changePathFunction | Change the destination file path.\u003cbr /\u003ein: string srcFile,string dstFile,string relativePath\u003cbr /\u003eout: string changeDstFile(Do not copy if empty.)\u003cbr /\u003e(Do nothing if null.)\n| searchOptions | Search top directory or all subdirectories. |\n| copyOptions | Copy option. |\n| throwCopyException | Throw when an exception occurs during file copying. |\n\n\n## Performance\n[Ver1.2.0 Copy File(1GiB)](https://github.com/EX-EXE/BufferCopy/actions/runs/3234056253)\n### Windows\n|              Method |        Mean |       Error |      StdDev |  Allocated |  buffer | pool |\n|-------------------- |------------:|------------:|------------:|-----------:|-------- |----- |\n| **System.IO.File.Copy** |  **1,064.0 ms** |  **2,762.8 ms** |   **151.44 ms** |      **480 B** |       **?** |    **?** |\n|          **BufferCopy** |    **550.8 ms** |  **1,508.3 ms** |    **82.68 ms** |  **8398720 B** | **1048576** |    **8** |\n|          **BufferCopy** |    **707.6 ms** |  **2,048.2 ms** |   **112.27 ms** | **16788136 B** | **1048576** |   **16** |\n|          **BufferCopy** |    **760.5 ms** |  **1,987.2 ms** |   **108.93 ms** | **31470352 B** | **1048576** |   **30** |\n\n### Ubuntu\n|              Method |     Mean |     Error |   StdDev |     Allocated |  buffer | pool |\n|-------------------- |---------:|----------:|---------:|--------------:|-------- |----- |\n| **System.IO.File.Copy** |   **5.297 s** |  **2.3075 s** | **0.1265 s** |       **1.56 KB** |      **?** |    **?** |\n|          **BufferCopy** |   **1.460 s** |  **0.4060 s** | **0.0223 s** |    **8204.26 KB** |**1048576** |    **8** |\n|          **BufferCopy** |   **1.483 s** |  **7.7781 s** | **0.4263 s** |   **16394.88 KB** |**1048576** |   **16** |\n|          **BufferCopy** |   **1.686 s** |  **2.4515 s** | **0.1344 s** |   **30732.85 KB** |**1048576** |   **30** |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fex-exe%2Fbuffercopy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fex-exe%2Fbuffercopy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fex-exe%2Fbuffercopy/lists"}