Esempio n. 1
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();
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Merges an input file group into a single output file
        /// </summary>
        /// <param name="fileGroup">The names of the input files to be merged</param>
        /// <param name="outputDirectory">The directory the output file is to be written in</param>
        /// <param name="fileTemplate">The template for the output file</param>
        /// <param name="fileGroupNumber">The file group number</param>
        /// <param name="updateProgress">A method that will be called to update chunk file creation progress. The
        /// number of integers that have been merged so far in the file group will be passed to this method
        /// whenever an integer is merged.</param>
        /// <returns>The path of the output file that was written</returns>
        private string MergeInputFileGroup(List <string> fileGroup, string outputDirectory, string fileTemplate,
                                           int fileGroupNumber, Action <int> updateProgress = null)
        {
            //Create the input stream readers
            List <StreamReader> inputStreamReaders = fileGroup
                                                     .Select(file => fileIO.CreateFileStreamReader(file))
                                                     .ToList();

            //Create the output file and output file stream writer
            string outputFilePath = Path.Combine(outputDirectory, string.Format(fileTemplate, fileGroupNumber));

            using (Stream outputFileStream = fileIO.CreateFile(outputFilePath))
                using (StreamWriter outputStreamWriter = new StreamWriter(outputFileStream))
                {
                    //Merge the input streams into the output stream
                    integerStreamMerger.MergeIntegerStreams(inputStreamReaders, outputStreamWriter, updateProgress);
                }

            //Close the input stream readers
            inputStreamReaders.ForEach(inputStreamReader => inputStreamReader.Close());

            return(outputFilePath);
        }