From 22ff6c7e6ca9f697e97a1b1b43c461821286e63f Mon Sep 17 00:00:00 2001 From: emkael Date: Mon, 23 May 2016 14:56:43 +0200 Subject: * PBN board/field structures with file operation mechanisms --- PBNFile.cs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'PBNFile.cs') diff --git a/PBNFile.cs b/PBNFile.cs index 3f68756..bec7fcd 100644 --- a/PBNFile.cs +++ b/PBNFile.cs @@ -8,12 +8,60 @@ namespace BCDD { class PBNFile { + public List Boards; + private String filename; + private String tmpFileName; + + StreamWriter outputFile; public PBNFile(String filename) { this.filename = filename; + this.Boards = new List(); + String[] contents = File.ReadAllLines(this.filename).Select(l => l.Trim()).ToArray(); + List lines = new List(); + foreach (String line in contents) + { + if (line.Length == 0) + { + if (lines.Count > 0) + { + this.Boards.Add(new PBNBoard(lines)); + lines = new List(); + } + } + else + { + lines.Add(line); + } + } + if (lines.Count > 0) + { + this.Boards.Add(new PBNBoard(lines)); + } } + public void WriteBoard(PBNBoard board) + { + if (this.outputFile == null) + { + this.tmpFileName = Path.GetTempFileName(); + this.outputFile = new StreamWriter(new FileStream(this.tmpFileName, FileMode.Create), Encoding.UTF8); + } + foreach (PBNField field in board.Fields) + { + this.outputFile.WriteLine(field.RawField); + } + this.outputFile.WriteLine(); + } + + public void Save() + { + this.outputFile.Flush(); + this.outputFile.Close(); + File.Delete(this.filename); + File.Move(this.tmpFileName, this.filename); + } } } -- cgit v1.2.3