こんにちは私は現在、以下のコードを使用して、ファイルを複数の2mbの小さな部分に分割しています。ファイルの分割を最適化する
const int BUFFER_SIZE = 20 * 1024;
byte[] buffer = new byte[BUFFER_SIZE];
using (Stream input = File.OpenRead(inputFile)) {
int index = 0;
while (input.Position < input.Length) {
using (Stream output = File.Create(path)) {
int remaining = chunkSize, bytesRead;
while (remaining > 0 && (bytesRead = input.Read(buffer, 0,
Math.Min(remaining, BUFFER_SIZE))) > 0) {
output.Write(buffer, 0, bytesRead);
remaining -= bytesRead;
}
}
}
index++;
}
これは完璧に動作し、5×2メガバイトのファイル0.part、2.part電気ショック療法に10メガバイトのファイルを分割します...
私は再び一部だけ3を生成する方法を知っていただきたいと思いますchunkSizeが常に2MBのままであることを知っている。私はif、else、およびindexを評価することでこれを実現できますが、1GBのファイルではこの処理には時間がかかります。私はこの機能をもっと理解したいのですが、私が必要とするファイルの一部をどうやって得ることができるのでしょうか?
あなたは[Stream.Seek]を使用することができます正しい場所を探すために(つまり、 '3 * 2mbの位置に移動してください(https://msdn.microsoft.com/en-us/library/system.io.filestream.seek(v=vs.110).aspx) '):' input.Seek(3 * 2 * 1024 * 1024、SeekOrigin.Begin); '。戻り値を確認して、正しい場所を探していることを確認してください。 –