long bytesread = 0;
FileInfo f = new FileInfo(ficheiroaEnviar);
tamanhoFicheiroEnviar = f.Length;
byte[] chunkFicheiro;
while (!tudoFeito)
{
long oQueFalta = (tamanhoFicheiroEnviar - bytesread);
if (oQueFalta < tamanhoChunkPredefenido)
{
chunkFicheiro = new byte[tamanhoChunkPredefenido];
}
else
{
chunkFicheiro = new byte[oQueFalta];
}
using (FileStream fsSource = new FileStream(ficheiroaEnviar, FileMode.Open, FileAccess.Read))
{
lock (fsSource)
{
fsSource.Seek(bytesread, SeekOrigin.Begin);
fsSource.Read(chunkFicheiro, bytesread, chunkFicheiro.Length);
}
}
bytesread += chunkFicheiro.Length;
}
我希望能够逐段读取 10GB 的文件?整数的最大数量为 2,147,483,647,10 GB 具有 10 000 000 000 字节。如何使用偏移流.read(other,int offset,other(,以便它可以处理大文件?
(如果需要,请编辑问题或标题(
读取操作中的偏移值是读取操作的目标数组中的偏移量。 从文件流读取时,位置将随着您读取而增加。https://msdn.microsoft.com/en-us/library/system.io.filestream.read(v=vs.110(.aspx
抵消类型:系统.Int32数组中将放置读取字节的字节偏移量。
您的查找操作将推进流(尽管不需要它(
您的读取应使用 0 作为偏移量,除非您想将其放置在 chunkFicheiro 数组中的不同索引处
//Example of reading the file from the stream
do
{
bytesRead = fsSource.Read(chunkFicheiro, 0, chunkFicheiro.Length);
//Do something with the chunk if bytesRead > 0
} while (bytesRead > 0);