/// <summary> /// Opens the file with a specified maxium number of rows with a default value that insures /// the max this code can handle isn't reached. /// </summary> /// <param name="filename"></param> /// <param name="maxRows"></param> public void OpenFile(string filename, int maxRows = Int32.MaxValue) { ColumnSelectorsVisible = false; if (_linesProvider != null) { _linesProvider.Dispose(); _linesProvider = null; } // Select low level lines provider as being a binary lines provider, or a text line provider BigFileLine lineConverter = _binaryMode ? (BigFileLine)(new BigBinFileLine()) : (BigFileLine)(new BigTextFileLine()); OpenProvider(new FileLinesProvider(filename, maxRows, lineConverter)); }
/// <summary> /// Initializes a new instance of the <see cref="DemoCustomerProvider"/> class. /// </summary> /// <param name="count">The count.</param> /// <param name="fetchDelay">The fetch delay.</param> public FileLinesProvider(string inputFilename, int maxRows, BigFileLine lineConverter) { _maxRows = maxRows; _lineConverter = lineConverter; _inputFilename = inputFilename; _inputStream = new FileStream(inputFilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); var firstLine = _lineConverter.GetLines(_inputStream, 0, 1).FirstOrDefault(); if (firstLine != null) { Header = firstLine.Columns.Aggregate((a, b) => a + "," + b); } _lineCountTask = Task.Run(() => CountLines(inputFilename, maxRows)); }