public void read_google_drive_info()
        {
            StringWriter all_output       = new StringWriter();
            FolderInfo   root_folder_info = read_all_tree(all_output, out runtime_sw);

            RootInfo _ri = new RootInfo();

            _ri.root = root_folder_info;
            my_utils.serialize_to_gz_file(_ri);

            Console.Write(all_output);
            if (root_folder_info.total_size_bytes != n_total_bytes)
            {
                // debug.
            }
            Console.WriteLine($"\r\nTotal Tree Objects: {n_total_obj}\r\nTotal Size: {my_utils.bytes_to_formatted_string(n_total_bytes)}\r\nTotal Processing Time: {runtime_sw.Elapsed.ToString(@"mm\:ss")}\r\nTotal Requests: {n_total_requests}");
            Console.WriteLine($"\r\n{all_my_mime_types.Count} all my mime types:");
            foreach (DictionaryEntry mime_type in all_my_mime_types)
            {
                Console.WriteLine($"{mime_type.Key} ({mime_type.Value})");
            }
            Console.WriteLine($"\r\n{missing_mime_types.Count} missing mime_types:");
            foreach (DictionaryEntry mime_type in missing_mime_types)
            {
                Console.WriteLine($"{mime_type.Key} ({mime_type.Value})");
            }
            //
            MainForm.global_ri = _ri;
            //
            form.show_processing_image("processing google tree...");
            MainForm.rescan_tree_from_google();

            MessageBox.Show("google-drive Rescanned.\r\nPlease Restart the application.");
            MainForm.this_form.run_load_google_drive_info();
        }
        public static void serialize_to_gz_file(RootInfo _ri)
        {
            // Binary:
            FileStream file_write_stream = System.IO.File.Open(MainForm.ser_name, FileMode.Create, FileAccess.Write);

            (new BinaryFormatter()).Serialize(file_write_stream, _ri);
            file_write_stream.Close();
            //
            // GZip:
            FileStream file_read_stream     = new FileStream(MainForm.ser_name, FileMode.Open, FileAccess.Read);
            string     compressed_file_name = MainForm.ser_name + ".gz";
            string     back_name            = MainForm.ser_name + ".bak.gz";

            // int i = compressed_file_name.LastIndexOf(@".");
            if (System.IO.File.Exists(compressed_file_name))
            {
                //string back_name = compressed_file_name.Substring(0, i) + @"\" + DateTime.Now.ToString("yyMMddHHmm") + " " + compressed_file_name.Substring(i + 1);
                System.IO.File.Delete(back_name);
                System.IO.File.Move(compressed_file_name, back_name);
            }
            FileStream compressedFileStream = new FileStream(compressed_file_name, FileMode.Create);
            GZipStream compressionStream    = new GZipStream(compressedFileStream, CompressionMode.Compress);

            file_read_stream.CopyTo(compressionStream);
            compressionStream.Close();
            file_read_stream.Close();
        }