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(); }
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"); } }
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); }