示例#1
0
        private void TestBigFileDump_File(string BIG_FILE, string FOLDER_PATH_FOR_CHUNK_FILES)
        {
            // Start processing the input Big file.
            StreamReader reader = new StreamReader(BIG_FILE);
            // Create a dump file class object to handle efficient memory management.
            var bigFileDumper = new BigFileDumper(FOLDER_PATH_FOR_CHUNK_FILES);

            // Reverse the list of commands as we would want the deepest leaf folder to be processed first.
            bigFileDumper.ReverseIt  = true;
            bigFileDumper.CHUNK_SIZE = 100; // How much at a time to keep in RAM before dumping to local file.

            while (reader.EndOfStream == false)
            {
                string line = reader.ReadLine();
                bigFileDumper.WriteLine(line);
            }
            bigFileDumper.Close();
            reader.Close();

            // Get back full reversed file.
            var reversedFilename = bigFileDumper.GetFullFile();

            Console.WriteLine("Check output file - " + reversedFilename);

            // Delete the temporary folders.
            bigFileDumper.CleanEverything();
        }
示例#2
0
        private void TestBigFileDump(string foldername)
        {
            if (Directory.Exists(foldername))
            {
                var bigfileDumper = new BigFileDumper(foldername);
                bigfileDumper.ReverseIt = true;

                for (int i = 0; i < 10000; i++)
                {
                    bigfileDumper.WriteLine(String.Format("{0}", i));
                }
                bigfileDumper.Close();

                // Get back full reversed file.
                var reversedFilename = bigfileDumper.GetFullFile();

                Console.WriteLine("Check output file - " + reversedFilename);
            }
            else
            {
                Console.WriteLine("Invalid folder path");
            }
        }
示例#3
0
        private void btnGenerateBat_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(tbxMappedFolder.Text) || String.IsNullOrEmpty(tbxTFSDirPath.Text))
            {
                MessageBox.Show("Empty source or destination folders");
            }
#if DEBUG
            if (cbxNoTFSDEBUG.Checked)
            {
                TestBigFileDump_File(@"D:\fusion\components\global\src\crxapps\AcFusionService\AcFusionDocInteropStub.cpp", @"H:\");
                return;
            }
#endif
            // Save Last settings.
            Properties.Settings.Default.settingServerFolder = tbxTFSDirPath.Text;
            Properties.Settings.Default.settingLocalFolder  = tbxMappedFolder.Text;
            Properties.Settings.Default.Save();

            var batOutFolder = tbxMappedFolder.Text;

            // Disable the buttons.
            btnGenerateBat.Enabled = false;
            btnRunBat.Enabled      = false;

            string lastFoldername = GetBatNameFromSource(tbxTFSDirPath.Text);

            directoryListFile = batOutFolder.TrimEnd(trimchars) + "\\" + lastFoldername + "_DIR.txt";

            batOutputFile       = batOutFolder.TrimEnd(trimchars) + "\\" + lastFoldername + ".bat";
            lblBatFileInfo.Text = "Check batch file at: " + batOutputFile;

            // Call Tf.exe and get the list of subdirectories. IMP.
            bool success = GenerateDirectoryList(ref directoryListFile, tbxTFSDirPath.Text);

            // delete existing file if any.
            if (File.Exists(batOutputFile) == true)
            {
                File.Delete(batOutputFile);
            }

            // Start processing the input directory file.
            StreamReader reader = new StreamReader(directoryListFile);
            // Create a dump file class object to handle efficient memory management.
            var bigFileDumper = new BigFileDumper(batOutFolder.TrimEnd(trimchars));
            // Reverse the list of commands as we would want the deepest leaf folder to be processed
            // first.
            bigFileDumper.ReverseIt = true;

            string masterFolder = tbxTFSDirPath.Text;
            //var linesToWrite = new List<string>();
            while (reader.EndOfStream == false)
            {
                string line = reader.ReadLine();
                // Now, we will only consider the lines which has full server folder path
                if (cbxRecursive.Checked)
                {
                    if (line.Contains(masterFolder))
                    {
                        line = line.TrimEnd(':');
                        // Add the tf command and option.
                        line = String.Format("TF.exe get {0} ", line); // It's already recursive because all folders are there.
                        // linesToWrite.Add(line);
                        bigFileDumper.WriteLine(line);
                    }
                }
                else
                {
                    if (line.Contains('$') && !line.Contains(masterFolder)) // take only chilren
                    {
                        line = masterFolder + "/" + line.TrimStart('$');
                        // Add the tf command and option.
                        line = String.Format("TF.exe get {0} /recursive", line);
                        //linesToWrite.Add(line);
                        bigFileDumper.WriteLine(line);
                    }
                }
            }
            bigFileDumper.Close();
            reader.Close();

            // Write the batch file with existing bigFileDumper.
            this.WriteTheBatchFile(ref bigFileDumper);

            btnGenerateBat.Enabled = true;
            btnRunBat.Enabled      = true;
            // Open the bat folder
            Process.Start("explorer.exe", tbxMappedFolder.Text);
        }