{"id":19880656,"url":"https://github.com/emzi0767/fileassembler","last_synced_at":"2026-03-04T03:32:10.875Z","repository":{"id":124526400,"uuid":"118000469","full_name":"Emzi0767/FileAssembler","owner":"Emzi0767","description":"A simple tool to split and assemble files.","archived":false,"fork":false,"pushed_at":"2018-12-06T12:21:52.000Z","size":17,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-24T11:29:21.144Z","etag":null,"topics":["csharp","dotnet","file-split","netcore","netframework","netfx","tool","utility"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Emzi0767.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":"2018-01-18T15:25:43.000Z","updated_at":"2021-08-31T10:06:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"4af57673-a2b0-4f0b-abea-00de03761268","html_url":"https://github.com/Emzi0767/FileAssembler","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Emzi0767/FileAssembler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FFileAssembler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FFileAssembler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FFileAssembler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FFileAssembler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Emzi0767","download_url":"https://codeload.github.com/Emzi0767/FileAssembler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FFileAssembler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30070762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T03:25:38.285Z","status":"ssl_error","status_checked_at":"2026-03-04T03:25:05.086Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["csharp","dotnet","file-split","netcore","netframework","netfx","tool","utility"],"created_at":"2024-11-12T17:12:09.165Z","updated_at":"2026-03-04T03:32:10.851Z","avatar_url":"https://github.com/Emzi0767.png","language":"C#","readme":"# FileAssembler\nA simple tool which lets you split and reassmeble files, for e.g. transport purposes.\n\nThis tool came to be when I needed to split large files for uploading them to my server, as my internet connection is \nunreliable. So I decided to split the files for transport, then reassemble them on the server.\n\n## Requirements\nThis tool is written in C#, and requires an implementation of .NET Framework to be available on your system. It has 2 \ntargets:\n\n- .NET Core 2.0\n- .NET Framework 4.5.2\n\nThis means that at least one of these must be available on the system.\n\n### .NET Core\nIf using .NET Core version of the tool, you need to have .NET Core 2.0 installed on your system. It is available for \ndownload from [.NET's official website](https://www.microsoft.com/net/download/windows). Make sure to download the 2.0 \nversion of .NET Core runtime for your operating system. You don't need the SDK, which is a much larger download.\n\n### .NET Framework\nTo use the .NET Framework (.NETFX) version of the tool, you need to make sure that an implementation of .NET Framework \n4.5.2 is available on your system. This means that you need to be running Windows 7 or newer. The required .NET version \nis available for download from [.NET's official website](https://www.microsoft.com/net/download/thank-you/net471).\n\n#### Non-Windows Operating Systems\nTo run the .NET Framework version of the tool on non-Windows Operating Systems, you will need to find a suitable \nimplementation of .NET Framework 4.5.2 for your operating system. For GNU/Linux, BSD, and OS X (and possibly other \n\\*NIX systems), you can use Mono (at least version 3.2).\n\nHowever, due to poor implementations and numerous bugs, I will not be providing support for the tool when using Mono, \nnor will I make any effort to fix the issues on said runtime. If you aren't running on Windows, I recommend using .NET \nCore, as it's significantly more stable and bug-free, and has much lower resource requirements.\n\n## Usage\nUsing the tool is relatively straightforward. First, download the latest version of the tool from \n[the Releases page](https://github.com/Emzi0767/FileAssembler/releases). Please note that the tool has 2 versions \navailable:\n\n- `fileassembler-x.y.z-netfx.zip` - .NET Framework 4.5.2 version. It is recommended for Windows Operating Systems.\n- `fileassembler-x.y.z-netcore.zip` - .NET Core 2.0 version. It is recommended for non-Windows Operating Systems.\n\nDepending on whether you pick the .NETFX or .NET Core version, basic usage is slightly different:\n\n- .NET Framework: `Emzi0767.FileAssembler.exe arguments...`\n- .NET Core: `dotnet Emzi0767.FileAssembler.dll arguments...`\n\nBeyond that, the tool has 2 operation modes: `split` and `assemble`.\n\n## Splitting files\nSplitting files is very easy. You need to specify the file to split, chunk size, and optionally output directory. \nArguments are as follows:\n\n```\nprogram split arguments...\n\narguments accepted:\n  -f | --filename           File to split.\n  -s | --chunk-size         Size of the output chunk, in bytes.\n  -o | --output-directory   Directory in which the files will be placed.\n```\n\nChunk size can be specified with one of the following prefixes:\n\n- `K`: kibbi; the value will be multiplied by 1024, e.g. `64K` will result in a chunk size of 64 \\* 1024, or 65,536 \n  bytes (64 KiB).\n- `k`: kilo; the value will be multiplied by 1000, e.g. `64k` will result in a chunk size of 64 \\* 1000, or 64,000 \n  bytes (64 KB).\n- `M`: mebbi; the value will be multiplied by 1024 \\* 1024, e.g. `64M` will result in a chunk size of 64 \\* 1024 \\* \n  1024, or 67,108,864 bytes (64 MiB).\n- `m`: mega; the value will be multiplied by 1000 \\* 1000, e.g. `64m` will result in a chunk size of 64 \\* 1000 \\* \n  1000, or 64,000,000 bytes (64 MB).\n- `G`: gibbi; the value will be multiplied by 1024 \\* 1024 \\* 1024, e.g. `64G` will result in a chunk size of 64 \\* \n  1024 \\* 1024 \\* 1024, or 68,719,476,736 bytes (64 GiB).\n- `g`: giga; the value will be multiplied by 1000 \\* 1000 \\* 1000, e.g. `64g` will result in a chunk size of 64 \\* 1000 \n  \\* 1000 \\* 1000, or 64,000,000,000 bytes (64 GB).\n\nIf these units are confusing to you, remember that KiB, MiB, GiB, etc are the units that Windows inaccurately reports \nto you as KB, MB, GB, etc.\n\nWhen output directory is not specified, output files will be placed alongside the input file.\n\nThe switches follow POSIX syntax (with the exception of grouping and non-spaced arguments), meaning that when \nspecifying e.g. filename can be done as `-f \"file name\"`, `-f file\\ name`, `-f filename`, `--filename=\"file name\"`, \netc.\n\n### Example 1\nTo split a file called `test.xyz` into chunks of 128 MiB, you would do something like this:\n\n`Emzi0767.FileAssembler.exe split -f \"text.xyz\" -s 128M`\n\n### Example 2\nTo split a file called `foo.bar` into chunks of 64 MiB, and place them in `F:\\oo\\bar`, you would do something \nlike this:\n\n`Emzi0767.FileAssembler.exe split -f \"foo.bar\" -s 64M -o \"F:\\oo\\bar\"`\n\n## Assembling files\nAssembling files requires that you specify the metadata file, and optionally an output directory. Note that all the \nchunk files must be in the same directory as the metadata file.\n\nThe metadata file is usually named `filename.ext.pmeta`, and the chunk files follow a naming scheme like this: \n`filename.ext.000.pdat`.\n\nArguments are as follows:\n\n```\nprogram assemble arguments...\n\narguments accepted:\n  -f | --filename           Metadata of the file to assemble.\n  -o | --output-directory   Directory in which the files will be placed.\n```\n\nWhen output directory is not specified, output files will be placed alongside the metadata file.\n\nThe switches follow POSIX syntax (with the exception of grouping and non-spaced arguments), meaning that when \nspecifying e.g. filename can be done as `-f \"file name\"`, `-f file\\ name`, `-f filename`, `--filename=\"file name\"`, \netc.\n\n### Example 1\nTo assemble a file called `test.xyz`, you will need to specify `test.xyz.pdat` as input file, as follows:\n\n`Emzi0767.FileAssembler.exe -f \"test.xyz.pdat\"`\n\n### Example 2\nTo assemble a file called `foo.bar` and place the output in `F:\\oo\\bar`, you will need to specify `foo.bar.pdat` as \ninput file, and `F:\\oo\\bar` as output directory, as follows:\n\n`Emzi0767.FileAssembler.exe -f \"foo.bar.pdat\" -o \"F:\\oo\\bar\"`\n\n## Issues and suggestions\nIf you find a problem, have an idea, or a suggestion, open an issue, or issue a pull request.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femzi0767%2Ffileassembler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femzi0767%2Ffileassembler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femzi0767%2Ffileassembler/lists"}