How can I read/stream a file without loading the entire file into memory?

后端 未结 5 1363
太阳男子
太阳男子 2020-11-27 18:47

How can I read an arbitrary file and process it \"piece by piece\" (meaning byte by byte or some other chunk size that would give the best read performance) without loading

5条回答
  •  悲哀的现实
    2020-11-27 19:09

    Here's an example of how to read a file in chunks of 1KB without loading the entire contents into memory:

    const int chunkSize = 1024; // read the file by chunks of 1KB
    using (var file = File.OpenRead("foo.dat"))
    {
        int bytesRead;
        var buffer = new byte[chunkSize];
        while ((bytesRead = file.Read(buffer, 0, buffer.Length)) > 0)
        {
            // TODO: Process bytesRead number of bytes from the buffer
            // not the entire buffer as the size of the buffer is 1KB
            // whereas the actual number of bytes that are read are 
            // stored in the bytesRead integer.
        }
    }
    

提交回复
热议问题