如何在 stream.read 中传递 long 作为偏移量


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);

相关内容

  • 没有找到相关文章

最新更新