Example #1
0
        public bool Check(string fileName)
        {
            using (var fileStream = FileWithBuffer.OpenRead(fileName, _fileBuffer))
            {
                FileLine previousLine    = FileLine.None;
                bool     firstLineReaden = false;
                foreach (var fileLine in new FileLineReader(fileStream, _streamBuffer))
                {
                    if (!_onlyCheckFormat && firstLineReaden)
                    {
                        if (previousLine.CompareTo(fileLine) > 0)
                        {
                            _logger.Warn($"File '{fileName}' is not properly sorted.");
                            _logger.Warn($"Line '{fileLine}' should be before line '{previousLine}'.");
                            return(false);
                        }
                    }

                    previousLine    = fileLine;
                    firstLineReaden = true;
                }

                return(true);
            }
        }
Example #2
0
 public void Generate(string fileName, long fileSize)
 {
     using (var fileStream = FileWithBuffer.OpenWrite(fileName, _fileBuffer))
     {
         if (_duplicates > 0)
         {
             WriteRandomStringsWithDuplicates(
                 fileStream,
                 fileSize);
         }
         else
         {
             WriteRandomStringsWithoutDuplicates(
                 fileStream,
                 fileSize);
         }
     }
 }
Example #3
0
        public void Sort(string inputFileName, string outputFileName)
        {
            using (var fileStream = FileWithBuffer.OpenRead(inputFileName, _fileBuffer))
                using (var targetChunkStorage = CreateTargetFileStorage(outputFileName))
                    using (var tempChunkStackFactory = new TempChunkStackFactory(outputFileName, _fileBuffer, _streamBuffer, _memoryBuffer))
                    {
                        var fileSize = fileStream.Length;

                        var chunkStack = new ChunkStack <FileLine>(
                            _memoryBuffer,
                            new FileLineSizeCalculator(),
                            targetChunkStorage);

                        var sortMethod = _sortMethodFactory.CreateSortMethod(chunkStack, tempChunkStackFactory);

                        var inputFileLines   = new FileLineReader(fileStream, _streamBuffer);
                        var sortedCollection = sortMethod.Sort(inputFileLines);
                        if (sortedCollection is IChunkReference <FileLine> chunkReference)
                        {
                            chunkReference.Flush(targetChunkStorage);
                        }
                    }
        }