# File lib/mongo/gridfs/grid_io.rb, line 58
    def initialize(files, chunks, filename, mode, opts={})
      @files          = files
      @chunks         = chunks
      @filename       = filename
      @mode           = mode
      opts            = opts.dup
      @query          = opts.delete(:query) || {}
      @query_opts     = opts.delete(:query_opts) || {}
      @fs_name        = opts.delete(:fs_name) || Grid::DEFAULT_FS_NAME
      @write_concern  = get_write_concern(opts)
      @local_md5      = Digest::MD5.new if Mongo::WriteConcern.gle?(@write_concern)
      @custom_attrs   = {}

      case @mode
        when 'r' then init_read
        when 'w' then init_write(opts)
        else
          raise GridError, "Invalid file mode #{@mode}. Mode should be 'r' or 'w'."
      end
    end