public void Process() { WriteLine($"Begin process of {InputFilePath}"); // class: File class: http://bit.ly/psfileclass if (!File.Exists(InputFilePath)) { WriteLine($"Error: file {InputFilePath} does not exist."); return; } // directory: find parent string rootDirectoryPath = new DirectoryInfo(InputFilePath).Parent.FullName; WriteLine($"Root data path is {rootDirectoryPath}"); // directory: check directory exists // class: Path class: http://bit.ly/pspathclass string inputFileDirectoryPath = Path.GetDirectoryName(InputFilePath); string backupDirectoryPath = Path.Combine(rootDirectoryPath, BackupDirectoryName); if (!Directory.Exists(backupDirectoryPath)) { WriteLine($"Creating {backupDirectoryPath}"); Directory.CreateDirectory(backupDirectoryPath); } // file: copying string inputFileName = Path.GetFileName(InputFilePath); string backupFilePath = Path.Combine(backupDirectoryPath, inputFileName); WriteLine($"Copying {inputFileName} to {backupFilePath}"); File.Copy(InputFilePath, backupFilePath, true); // overwrite true // file: moving Directory.CreateDirectory(Path.Combine(rootDirectoryPath, InProgressDirectoryName)); string inProgressFilePath = Path.Combine(rootDirectoryPath, InProgressDirectoryName, inputFileName); if (File.Exists(inProgressFilePath)) { WriteLine($"ERROR: a file with name {inProgressFilePath} is already being processed"); return; } WriteLine($"Moving {InputFilePath} to {inProgressFilePath}"); File.Move(InputFilePath, inProgressFilePath); // file: extension -> how to process, determine type of file string extension = Path.GetExtension(InputFilePath); string completedDirectoryPath = Path.Combine(rootDirectoryPath, CompletedDirectoryName); Directory.CreateDirectory(completedDirectoryPath); // WriteLine($"Moving {inProgressFilePath} to {completedDirectoryPath}"); // File.Move(inProgressFilePath, Path.Combine(completedDirectoryPath, inputFileName)); var completedFileName = $"{Path.GetFileNameWithoutExtension(InputFilePath)}-{Guid.NewGuid()}{extension}"; completedFileName = Path.ChangeExtension(completedFileName, ".complete"); var completedFilePath = Path.Combine(completedDirectoryPath, completedFileName); switch (extension) { case ".txt": var textProcessor = new TextFileProcessor(inProgressFilePath, completedFilePath); textProcessor.Process(); break; case ".data": var binaryProcessor = new BinaryFileProcessor(inProgressFilePath, completedFilePath); binaryProcessor.Process(); break; case ".csv": var csvFileProcessor = new CsvFileProcessor(inProgressFilePath, completedFilePath); csvFileProcessor.Process(); break; default: WriteLine($"{extension} is an unsupported file type."); break; } WriteLine($"Completed processing of {inProgressFilePath}"); WriteLine($"Deleting {inProgressFilePath}"); File.Delete(inProgressFilePath); }
public void Process() { WriteLine($"Begin process of {InputFilePath}"); // Check if file exists if (!File.Exists(InputFilePath)) { WriteLine($"ERROR: file {InputFilePath} does not exist."); return; } string rootDirectoryPath = new DirectoryInfo(InputFilePath).Parent.Parent.FullName; WriteLine($"Root data path is {rootDirectoryPath}"); // Check if backup dir exists string inputFileDirectoryPath = Path.GetDirectoryName(InputFilePath); string backupDirectoryPath = Path.Combine(rootDirectoryPath, BackupDirectoryName); // Doesn't Error if the Directory already exists Directory.CreateDirectory(backupDirectoryPath); // Copy file to backup dir string inputFileName = Path.GetFileName(InputFilePath); string backupFilePath = Path.Combine(backupDirectoryPath, inputFileName); WriteLine($"Copying {InputFilePath}, to {backupFilePath}"); File.Copy(InputFilePath, backupFilePath, true); // Move to in progress dir Directory.CreateDirectory(Path.Combine(rootDirectoryPath, InProgressDirectoryName)); string inProgressFilePath = Path.Combine(rootDirectoryPath, InProgressDirectoryName, inputFileName); if (File.Exists(inProgressFilePath)) { WriteLine($"ERROR: a file with the name {inProgressFilePath} is already being processed."); return; } WriteLine($"Moving {InputFilePath} to {inProgressFilePath}"); File.Move(InputFilePath, inProgressFilePath); // Determine type of file string extension = Path.GetExtension(InputFilePath); string completedDirectoryPath = Path.Combine(rootDirectoryPath, CompletedDirectoryName); Directory.CreateDirectory(completedDirectoryPath); var completedFileName = $"{Path.GetFileNameWithoutExtension(InputFilePath)}-{Guid.NewGuid()}{extension}"; var completedFilePath = Path.Combine(completedDirectoryPath, completedFileName); switch (extension) { case ".txt": var textProcessor = new TextFileProcessor(inProgressFilePath, completedFilePath); textProcessor.Process(); break; case ".data": var binaryProcessor = new BinaryFileProcessor(inProgressFilePath, completedFilePath); binaryProcessor.Process(); break; case ".csv": var csvProcessor = new CsvFileProcessor(inProgressFilePath, completedFilePath); csvProcessor.Process(); break; default: WriteLine($"{extension} is an unsupported file type."); break; } WriteLine($"Completed processing of {inProgressFilePath}"); WriteLine($"Deleting {inProgressFilePath}"); File.Delete(inProgressFilePath); }
internal void Process() { Console.WriteLine($"Begin process of {inputFilePath}"); // Check if file exists if (!File.Exists(inputFilePath)) { Console.WriteLine($"ERROR: file {inputFilePath} does not exist."); return; } string rootDirectoryPath = new DirectoryInfo(inputFilePath).Parent.Parent.FullName; Console.WriteLine($"Root data path is {rootDirectoryPath}"); // Check if backup directory exists string inputFileDirectoryPath = Path.GetDirectoryName(inputFilePath); string backupDirectoryPath = Path.Combine(rootDirectoryPath, BackupDirectoryName); //if (!Directory.Exists(backupDirectoryPath)) // // Console.WriteLine($"Creating {backupDirectoryPath}"); //The method does not throw error if the directory already exists , no need to check Directory.CreateDirectory(backupDirectoryPath); // copy file to backup directory string inputFileName = Path.GetFileName(inputFilePath); string backupFilePath = Path.Combine(backupDirectoryPath, inputFileName); Console.WriteLine($"Copying {inputFilePath} to {backupFilePath}"); File.Copy(inputFilePath, backupFilePath, true); // Move to in progress dir Directory.CreateDirectory(Path.Combine(rootDirectoryPath, InProgressDirectoryName)); string inProgressFilePath = Path.Combine(rootDirectoryPath, InProgressDirectoryName, inputFileName); if (File.Exists(inProgressFilePath)) { Console.WriteLine($"ERROR: a file name {inProgressFilePath} is already being processed."); return; } Console.WriteLine($"Moving {inputFilePath} to {inProgressFilePath}"); File.Move(inputFilePath, inProgressFilePath); // Determine type of file string extension = Path.GetExtension(inputFilePath); string completedDirectoryPath = Path.Combine(rootDirectoryPath, CompletedDirectoryName); Directory.CreateDirectory(completedDirectoryPath); var completedFileName = $"{Path.GetFileNameWithoutExtension(inputFilePath)}--{Guid.NewGuid()}-{extension}"; var completedFilePath = Path.Combine(completedDirectoryPath, completedFileName); switch (extension) { case ".txt": //ProcessTxtFile(inProgressFilePath); var textProcessor = new TextFileProcessor(inProgressFilePath, completedFilePath); textProcessor.Process(); break; case ".data": var binaryProcessor = new BinaryFileProcessor(inProgressFilePath, completedFilePath); binaryProcessor.Process(); break; case ".csv": var csvProcessor = new CsvFileProcessor(inProgressFilePath, completedFilePath); csvProcessor.Process(); break; default: Console.WriteLine($"{extension} is an unsupported file type."); break; } //File.Move(inProgressFilePath, completedFilePath); Console.WriteLine($"Completed processing of {inProgressFilePath}"); Console.WriteLine($"Deleting {inProgressFilePath}"); File.Delete(inProgressFilePath); }