Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在stream.read中传递长度作为偏移量? long bytesread=0; FileInfo f=新的FileInfo(ficheiroanvier); tamanhoFicheiroEnviar=f.长度; 字节[]chunkfichero; 而(!tudoFeito) { long oQueFalta=(tamanhoFicheiroEnviar-bytesread); if(oQueFalta_C#_Stream - Fatal编程技术网

C# 如何在stream.read中传递长度作为偏移量? long bytesread=0; FileInfo f=新的FileInfo(ficheiroanvier); tamanhoFicheiroEnviar=f.长度; 字节[]chunkfichero; 而(!tudoFeito) { long oQueFalta=(tamanhoFicheiroEnviar-bytesread); if(oQueFalta

C# 如何在stream.read中传递长度作为偏移量? long bytesread=0; FileInfo f=新的FileInfo(ficheiroanvier); tamanhoFicheiroEnviar=f.长度; 字节[]chunkfichero; 而(!tudoFeito) { long oQueFalta=(tamanhoFicheiroEnviar-bytesread); if(oQueFalta,c#,stream,C#,Stream,我想能够逐条读取10GB文件? 整数的最大数目为2147483647,10GB有10000字节。如何使用offset stream.read(其他,int offset,其他)以便它可以处理大文件 (如果需要,请编辑问题或标题)读取操作中的偏移量值是读取操作的目标数组中的偏移量。从文件流读取时,位置将随着读取而增加 抵消 类型:System.Int32 数组中的字节偏移量,读取字节将放置在该偏移量处。 seek操作将使流前进(尽管不需要) 您的读取应该使用0作为偏移量,除非您希望将其放置在Chu

我想能够逐条读取10GB文件? 整数的最大数目为2147483647,10GB有10000字节。如何使用offset stream.read(其他,int offset,其他)以便它可以处理大文件


(如果需要,请编辑问题或标题)

读取操作中的偏移量值是读取操作的目标数组中的偏移量。从文件流读取时,位置将随着读取而增加

抵消 类型:System.Int32 数组中的字节偏移量,读取字节将放置在该偏移量处。

seek操作将使流前进(尽管不需要)

您的读取应该使用0作为偏移量,除非您希望将其放置在ChunkFichero数组中的其他索引处

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

的第一个参数是Int64。您的代码应该可以工作(至少对于与Seek调用相关的所有内容)我所说的
fsSource.Read(chunkfichero、bytesread、chunkfichero.Length)字节读取,如果我使用的是10GB文件,则需要比int@meme这是要在目标数组中使用的偏移量,而不是源流。由于数组不能大于
int,因此MaxValue
不允许偏移量大于该值。
//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);