あなたの質問にはいくつかのケースがありますが、どれも言語に関連していません。
以下、気になる点
- ソース/デスティネーション ファイルのファイル システムは何ですか?
- 元のソース ファイルを保持しますか?
- それらは同じドライブにありますか?
C# では、メソッドが内部的File.Copy
に呼び出すよりも高速になる可能性はほとんどありません。ただし、パーセンテージが 50 であるため、次のコードは高速ではない可能性があります。ファイル全体をコピーし、宛先ファイルの長さを設定しますCopyFile
WINAPI
var info=new FileInfo(fileName);
var percentSplit=info.Length*50/100; // extract 50% of file
File.Copy(info.FullName, splitName);
using(var outStream=File.OpenWrite(splitName))
outStream.SetLength(percentSplit);
さらに、
- ファイル分割後に元のソースを保持しない
- 宛先ドライブはソースと同じです
- 暗号化/圧縮が有効なファイル システムを使用していない
次に、できる最善のことは、ファイルをまったくコピーしないことです。たとえば、ソース ファイルがFAT
またはFAT32
ファイル システムにある場合、できることは次のとおりです。
- ファイルの新しく分割された部分の新しいディレクトリ エントリ (エントリ) を作成します
- エントリがターゲット パーツのクラスタを指すようにする
- 各エントリに正しいファイル サイズを設定する
- クロスリンクをチェックし、それを避ける
ファイル システムがNTFS
であった場合、仕様を調べるのに長い時間を費やす必要があるかもしれません。
幸運を!