diff --git a/VAR.DatabaseExplorer/Code/SplittingStreamWriter.cs b/VAR.DatabaseExplorer/Code/SplittingStreamWriter.cs new file mode 100644 index 0000000..a7eea46 --- /dev/null +++ b/VAR.DatabaseExplorer/Code/SplittingStreamWriter.cs @@ -0,0 +1,65 @@ +using System.IO; +using System.Text; + +namespace VAR.DatabaseExplorer.Code +{ + class SplittingStreamWriter : TextWriter + { + private string _baseFileName = null; + private int _fileNumber = 0; + + private StreamWriter _currentStreamWriter = null; + + public SplittingStreamWriter(string baseFileName) + { + _baseFileName = baseFileName; + _currentStreamWriter = new StreamWriter(string.Format(_baseFileName, _fileNumber)); + } + + public override void Write(char value) + { + _currentStreamWriter.Write(value); + } + + public override void Write(string value) + { + _currentStreamWriter.Write(value); + } + + public override void WriteLine() + { + _currentStreamWriter.WriteLine(); + } + + public override void WriteLine(string value) + { + _currentStreamWriter.WriteLine(value); + } + + public override Encoding Encoding + { + get { return Encoding.Default; } + } + + public void Split() + { + _currentStreamWriter.Close(); + _fileNumber++; + _currentStreamWriter = new StreamWriter(string.Format(_baseFileName, _fileNumber)); + } + + public static void Split(object obj) + { + SplittingStreamWriter splittingStreamWriter = obj as SplittingStreamWriter; + if (obj == null) { return; } + splittingStreamWriter.Split(); + } + + public override void Close() + { + _currentStreamWriter.Close(); + _currentStreamWriter = null; + _fileNumber = 0; + } + } +} diff --git a/VAR.DatabaseExplorer/VAR.DatabaseExplorer.csproj b/VAR.DatabaseExplorer/VAR.DatabaseExplorer.csproj index 3e90f34..b437945 100644 --- a/VAR.DatabaseExplorer/VAR.DatabaseExplorer.csproj +++ b/VAR.DatabaseExplorer/VAR.DatabaseExplorer.csproj @@ -97,6 +97,7 @@ + Component