示例#1
0
 private void LoadPermanentFilesIntoMemory()
 {
     foreach (string directory in PermanentCachedDirectories)
     {
         FileIO.CreateDirectory(directory);
         GetFilesFromDirectoryWhileLoadingIntoMemory(directory);
     }
 }
示例#2
0
        public static void CreateDirectory(string destinationDirectory,
                                           Options options)
        {
            bool    traceException = options.IsTraceOn(Trace_Options.TraceExceptions);
            IFileIO fileIO         = FileIOFactory.GetFileIO();

            fileIO.CreateDirectory(destinationDirectory, traceException);
        }
示例#3
0
        /// <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);
            }
        }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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);
 }