diff --git a/CsvLib/BufferedTextReader.cs b/CsvLib/BufferedTextReader.cs index b6f555e..3da080c 100644 --- a/CsvLib/BufferedTextReader.cs +++ b/CsvLib/BufferedTextReader.cs @@ -7,7 +7,7 @@ namespace CsvLib { private readonly TextReader _baseReader; private int _position; - private readonly StringBuilder _sbBuffer = new StringBuilder(); + private readonly StringBuilder _sbBuffer = new(); private readonly Encoding _currentEncoding = Encoding.Default; diff --git a/CsvLib/CsvFieldIndexer.cs b/CsvLib/CsvFieldIndexer.cs index df47523..663ff4f 100644 --- a/CsvLib/CsvFieldIndexer.cs +++ b/CsvLib/CsvFieldIndexer.cs @@ -22,11 +22,11 @@ namespace CsvLib _escapeChar = escapeChar; } - private List _index = new List(); + private List _index = new(); public List Index { get { return _index; } } - private List> _fieldIndex = new List>(); + private List> _fieldIndex = new(); public List> FieldIndex { get { return _fieldIndex; } } @@ -58,7 +58,7 @@ namespace CsvLib private List ParseLineIndex(string line, long lineOffset) { - List fieldPositions = new List(); + List fieldPositions = new(); long? fieldStartPosition = null; long? fieldEndPosition = null; int unicodeDelta = 0; @@ -99,7 +99,7 @@ namespace CsvLib } long absolutePosition = lineOffset + i + unicodeDelta; - if (fieldStartPosition == null) { fieldStartPosition = absolutePosition; } + fieldStartPosition ??= absolutePosition; fieldEndPosition = absolutePosition; } } @@ -116,11 +116,9 @@ namespace CsvLib public void GenerateIndex(string file) { - using (FileStream stream = new FileStream(file, FileMode.Open)) - using (StreamReader streamReader = new StreamReader(stream, Encoding.Default, true, 4096)) - { - GenerateIndex(streamReader); - } + using FileStream stream = new(file, FileMode.Open); + using StreamReader streamReader = new(stream, Encoding.Default, true, 4096); + GenerateIndex(streamReader); } public void GenerateIndex(TextReader textReader) @@ -133,50 +131,53 @@ namespace CsvLib { _currentEncoding = streamReader.CurrentEncoding; } - using (BufferedTextReader reader = new BufferedTextReader(textReader)) + using BufferedTextReader reader = new(textReader); + string currentLine; + while ((currentLine = reader.ReadLine()) != null) { - string currentLine; - while ((currentLine = reader.ReadLine()) != null) - { - DummyParser(currentLine); - if (_insideString) { continue; } + DummyParser(currentLine); + if (_insideString) { continue; } - string fullLine = reader.GetBuffer(); - reader.CleanBuffer(); - List fieldIndexes = ParseLineIndex(fullLine, _index[idxRow]); - _fieldIndex.Add(fieldIndexes); + string fullLine = reader.GetBuffer(); + reader.CleanBuffer(); + List fieldIndexes = ParseLineIndex(fullLine, _index[idxRow]); + _fieldIndex.Add(fieldIndexes); - _index.Add(reader.Position); + _index.Add(reader.Position); - idxRow++; - } + idxRow++; } } private void Index_SaveFile(string indexFile) { + if (indexFile == null) { return; } if (File.Exists(indexFile)) { File.Delete(indexFile); } Stream streamOut = File.Open(indexFile, FileMode.Create); - using (BinaryWriter binWriter = new BinaryWriter(streamOut)) + using (BinaryWriter binWriter = new(streamOut)) { binWriter.Write(_index.Count); for (int i = 0; i < _index.Count; i++) { binWriter.Write(_index[i]); } + binWriter.Write("test"); } streamOut.Close(); } - private static List Index_LoadFile(string indexFile) + private void Index_LoadFile(string indexFile) { - List tempIndex = new List(); - + if (File.Exists(indexFile) == false) + { + return; + } + List tempIndex = new(); Stream streamIn = File.Open(indexFile, FileMode.Open); - using (BinaryReader binReader = new BinaryReader(streamIn)) + using (BinaryReader binReader = new(streamIn)) { int numRegs = binReader.ReadInt32(); for (int i = 0; i < numRegs; i++) @@ -186,7 +187,7 @@ namespace CsvLib } } streamIn.Close(); - return tempIndex; + _index = tempIndex; } public void LoadIndexOfFile(string file) @@ -195,7 +196,7 @@ namespace CsvLib string indexFile = $"{file}.idx2"; if (File.Exists(indexFile) && File.GetCreationTime(indexFile) > dtFile) { - _index = Index_LoadFile(indexFile); + Index_LoadFile(indexFile); } else { diff --git a/CsvLib/CsvIndexer.cs b/CsvLib/CsvIndexer.cs index 1651aa2..8743dff 100644 --- a/CsvLib/CsvIndexer.cs +++ b/CsvLib/CsvIndexer.cs @@ -20,7 +20,7 @@ namespace CsvLib _escapeChar = escapeChar; } - private List _index = new List(); + private List _index = new(); public List Index { get { return _index; } } @@ -54,34 +54,31 @@ namespace CsvLib { _insideString = false; _index.Clear(); - using (FileStream stream = new FileStream(file, FileMode.Open)) - using (StreamReader streamReader = new StreamReader(stream, Encoding.Default, true, 4096)) - using (TrackingTextReader reader = new TrackingTextReader(streamReader)) + _index.Add(0); + using FileStream stream = new(file, FileMode.Open); + using StreamReader streamReader = new(stream, Encoding.Default, true, 4096); + using TrackingTextReader reader = new(streamReader); + + string currentLine; + while ((currentLine = reader.ReadLine()) != null) { - string currentLine; + DummyParser(currentLine); if (_insideString == false) { _index.Add(reader.Position); } - while ((currentLine = reader.ReadLine()) != null) - { - DummyParser(currentLine); - if (_insideString == false) - { - _index.Add(reader.Position); - } - } } } private void Index_SaveFile(string indexFile) { + if (indexFile == null) { return; } if (File.Exists(indexFile)) { File.Delete(indexFile); } Stream streamOut = File.Open(indexFile, FileMode.Create); - using (BinaryWriter binWriter = new BinaryWriter(streamOut)) + using (BinaryWriter binWriter = new(streamOut)) { binWriter.Write(_index.Count); for (int i = 0; i < _index.Count; i++) @@ -94,10 +91,10 @@ namespace CsvLib private static List Index_LoadFile(string indexFile) { - List tempIndex = new List(); + List tempIndex = new(); Stream streamIn = File.Open(indexFile, FileMode.Open); - using (BinaryReader binReader = new BinaryReader(streamIn)) + using (BinaryReader binReader = new(streamIn)) { int numRegs = binReader.ReadInt32(); for (int i = 0; i < numRegs; i++) diff --git a/CsvLib/CsvLib.csproj b/CsvLib/CsvLib.csproj index 2756020..96b54da 100644 --- a/CsvLib/CsvLib.csproj +++ b/CsvLib/CsvLib.csproj @@ -1,7 +1,8 @@ - netstandard2.0 + net7.0 + 11 diff --git a/CsvLib/CsvParser.cs b/CsvLib/CsvParser.cs index 68edfa6..69f8d30 100644 --- a/CsvLib/CsvParser.cs +++ b/CsvLib/CsvParser.cs @@ -19,7 +19,7 @@ namespace CsvLib _escapeChar = escapeChar; } - private List> _data = new List>(); + private List> _data = new(); private List _currentReg; StringBuilder _currentCell; @@ -29,16 +29,10 @@ namespace CsvLib get { return _data; } } - public void ParseLine(string line) + private void ParseLine(string line) { - if (_currentReg == null) - { - _currentReg = new List(); - } - if (_currentCell == null) - { - _currentCell = new StringBuilder(); - } + _currentReg ??= new List(); + _currentCell ??= new StringBuilder(); for (int i = 0; i < line.Length; i++) { @@ -88,9 +82,9 @@ namespace CsvLib _insideString = false; _data = new List>(); _currentReg = null; - FileStream stream = new FileStream(file, FileMode.Open); + FileStream stream = new(file, FileMode.Open); stream.Seek(offset, SeekOrigin.Begin); - using (StreamReader reader = new StreamReader(stream, Encoding.Default, true, 4096)) + using (StreamReader reader = new(stream, Encoding.Default, true, 4096)) { string currentLine; while ((currentLine = reader.ReadLine()) != null)