From d0261de8026fd49dd2e12b00d699be49730df0a3 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Mon, 7 Oct 2019 11:06:00 +0200 Subject: [PATCH] SplittingStreamWriter: StreamWriter that splits files. --- .../Code/SplittingStreamWriter.cs | 65 +++++++++++++++++++ .../VAR.DatabaseExplorer.csproj | 1 + 2 files changed, 66 insertions(+) create mode 100644 VAR.DatabaseExplorer/Code/SplittingStreamWriter.cs 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