private void LoadPermanentFilesIntoMemory() { foreach (string directory in PermanentCachedDirectories) { FileIO.CreateDirectory(directory); GetFilesFromDirectoryWhileLoadingIntoMemory(directory); } }
public static void CreateDirectory(string destinationDirectory, Options options) { bool traceException = options.IsTraceOn(Trace_Options.TraceExceptions); IFileIO fileIO = FileIOFactory.GetFileIO(); fileIO.CreateDirectory(destinationDirectory, traceException); }
/// <see cref="IChunkFileMerger.MergeChunkFilesIntoSingleFile(List{string}, int, string, string, string, int, bool, Action{int, int})" public List <string> MergeChunkFilesIntoSingleFile(List <string> chunkFiles, int mergeCount, string intermediateFileTemplate, string outputFile, string outputDirectory, int startingGeneration, bool deleteIntermediateFiles, Action <int, int> updateProgress) { int currentGeneration = startingGeneration; //Call the updateProgress callback every time an integer is merged Action <int> updateMergeProgress = (integerCount => { updateProgress?.Invoke(currentGeneration, integerCount); }); //Create the output directory if it does not already exist fileIO.CreateDirectory(outputDirectory); List <string> intermediateFiles = new List <string>(); List <string> remainingFiles = chunkFiles; //Merge the integer files until only one file is left do { //Create the file template for the current generation string generationFileTemplate = string.Format(intermediateFileTemplate, currentGeneration, "{0}"); List <string> mergedFiles = remainingFiles; //Merge the files for the current generation remainingFiles = integerFileMerger.MergeIntegerFiles(remainingFiles, mergeCount, generationFileTemplate, outputDirectory, updateMergeProgress); intermediateFiles.AddRange(remainingFiles); //If we are to delete the intermediate files, then delete the files that were merged as part of //this merge generation if (deleteIntermediateFiles) { mergedFiles.ForEach(file => fileIO.DeleteFile(file)); } currentGeneration++; }while (remainingFiles.Count > 1); string outputFilePath = Path.Combine(outputDirectory, outputFile); //Delete any previous output file with the same name fileIO.DeleteFile(outputFilePath); //Rename the remaining file to the output file //Note that an empty input file will not result in a remaining file, so we have to check to see //if there are any remaining files if (remainingFiles.Count > 0) { fileIO.RenameFile(remainingFiles[0], outputFile); } return(intermediateFiles); }
void WriteVSCodeSettingsFiles() { var vsCodeDirectory = Path.Combine(ProjectDirectory, ".vscode"); if (!m_FileIOProvider.Exists(vsCodeDirectory)) { m_FileIOProvider.CreateDirectory(vsCodeDirectory); } var vsCodeSettingsJson = Path.Combine(vsCodeDirectory, "settings.json"); if (!m_FileIOProvider.Exists(vsCodeSettingsJson)) { m_FileIOProvider.WriteAllText(vsCodeSettingsJson, k_SettingsJson); } }
/// <see cref="IIntegerFileMerger.MergeIntegerFiles(List{string}, int, string, string, Action{int})"/> public List <string> MergeIntegerFiles(List <string> integerFiles, int mergeCount, string fileTemplate, string outputDirectory, Action <int> updateProgress) { Debug.Assert(integerFiles != null); Debug.Assert(mergeCount > 0); Debug.Assert(fileTemplate != null); Debug.Assert(outputDirectory != null); List <string> outputFiles = new List <string>(); //Create the output directory if it doesn't already exist fileIO.CreateDirectory(outputDirectory); //Group the integer files into merge groups using mergeCount List <List <string> > mergeFileGroups = integerFiles .Chunk(mergeCount) .Select(fileGroup => fileGroup.ToList()) .ToList(); int mergeFileGroupNum = 1; int totalIntegersUpdated = 0; //If an updateProgress method was provided, create another method that will be passed to the //file group merge process. This will sum up the integers merged over all the merge processes and call //the updateProgress method with the total. Action <int> updateGroupMergeProgress = updateProgress == null ? updateProgress : integersUpdated => { totalIntegersUpdated++; updateProgress.Invoke(totalIntegersUpdated); }; //Merge each file group mergeFileGroups.ForEach(fileGroup => { string outputFilePath = MergeInputFileGroup(fileGroup, outputDirectory, fileTemplate, mergeFileGroupNum, updateGroupMergeProgress); outputFiles.Add(outputFilePath); mergeFileGroupNum++; }); return(outputFiles); }
/// <see cref="IIntegerFileCreator.CreateIntegerTextFile(IEnumerable{int}, string)"/> public void CreateIntegerTextFile(IEnumerable <int> integers, string filePath) { //Create the directory the file will be living in, if it does not already exist fileIO.CreateDirectory(fileIO.GetDirectoryFromFilePath(filePath)); //Create the file using (Stream fileStream = fileIO.CreateFile(filePath)) { //Create a stream writer from the file stream using (StreamWriter fileStreamWriter = new StreamWriter(fileStream)) { //Iterate over each integer and write it to the file foreach (int integer in integers) { fileIO.WriteIntegerToStream(fileStreamWriter, integer); } //Flush the stream writer fileStreamWriter.Flush(); } } }
public void CreateDirectory(string destinationDirectory, bool traceException) { _fileIO.CreateDirectory(destinationDirectory, traceException); }