public void Reset() { _source.Reset(); // If this is a reset, ensure the old writer is Disposed (and flushes output) if (_writer != null) { _writer.Dispose(); _writer = null; // On Dispose, tell the StreamProvider to publish the table _streamProvider.Publish(_outputFilePath); } }
private static void Append(string inputFileOrFolderPath, string outputFilePath, string inputFileNamePattern = null) { string[] inputFilePaths; if (Directory.Exists(inputFileOrFolderPath)) { if (String.IsNullOrEmpty(inputFileNamePattern)) { inputFileNamePattern = "*.*"; } inputFilePaths = Directory.GetFiles(inputFileOrFolderPath, inputFileNamePattern); } else { inputFilePaths = new string[] { inputFileOrFolderPath }; } ITabularWriter writer = null; string writerColumns = null; try { foreach (string inputFilePath in inputFilePaths) { using (ITabularReader reader = TabularFactory.BuildReader(inputFilePath)) { // Build the writer, if this is the first file if (writer == null) { writer = TabularFactory.AppendWriter(outputFilePath, reader.Columns); writerColumns = String.Join(", ", reader.Columns); } // Validate columns match string sourceColumns = String.Join(", ", reader.Columns); if (string.Compare(writerColumns, sourceColumns, true) != 0) { throw new InvalidOperationException(string.Format("Can't append to \"{0}\" because the column names don't match.\r\nExpect: {1}\r\nActual: {2}", outputFilePath, writerColumns, sourceColumns)); } // Copy the rows CopyRows(reader, writer); // Write a summary for this input file Trace.WriteLine($" {inputFilePath}, {reader.RowCountRead:n0} rows; {reader.BytesRead.SizeString()}"); } } // Write a summary for the output file WriteSizeSummary(null, writer); } finally { if (writer != null) { writer.Dispose(); writer = null; } } }
public void Dispose() { if (_writer != null) { _writer.Dispose(); _writer = null; } }