private void OpenFile(string filename, string nodePath, SharpRowReader rowReader) { if (!string.IsNullOrEmpty(nodePath)) { var node = _nodes.GetNode(nodePath); if (node == null) { _nodes.Add(new SharpNode { Path = nodePath, Name = SharpNode.GetNodeName(nodePath) }); } } _stream = new FileStream(filename, FileMode.Open, FileAccess.Read); _rows = new SharpRowStream { Nodes = _nodes, StreamNode = string.IsNullOrEmpty(nodePath) ? null : _nodes.GetNode(nodePath), StreamSource = rowReader(_stream, _nodes) }; }
public void OpenDelimitedFile(string rootNodePath, string filename, Encoding encoding = null) { using (var source = new FileStream(filename, FileMode.Open, FileAccess.Read)) { if (!SkipReadHeader) { var headerReader = new StreamReader(source); DefaultHeaderLine = headerReader.ReadLine(); } var mapNode = FormatReader.LoadHeaderLine(DefaultHeaderLine, _delimiter, _nodes, rootNodePath, _aliases); _mapSets[rootNodePath] = mapNode; _stream = new FileStream(filename, FileMode.Open, FileAccess.Read); _rows = new SharpRowStream { Nodes = _nodes, StreamNode = _nodes.GetNode(rootNodePath), StreamSource = new FlatReader(_stream, mapNode, encoding, SkipEmptyRows) }; // Create node rows for parents of map node var nodes = new List <SharpNode> { mapNode.Parent }; while (nodes[0].Parent != null) { nodes.Insert(0, nodes[0].Parent); } nodes.Remove(nodes.Last()); var rows = nodes.Select(n => new SharpNodeRow(n)).ToList(); _rows.AddRange(rows); } }