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); } }
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); } } }