FL.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. namespace OpenVIII
  6. {
  7. // ReSharper disable once InconsistentNaming
  8. public class FL : IReadOnlyList<string>
  9. {
  10. #region Fields
  11. private readonly List<string> _data;
  12. #endregion Fields
  13. #region Constructors
  14. public FL(byte[] buffer) => _data = System.Text.Encoding.UTF8.GetString(buffer).Split('\n').Select(x => x.TrimEnd()).ToList();
  15. public FL(StreamWithRangeValues fL)
  16. {
  17. using (var br = new StreamReader(fL, System.Text.Encoding.UTF8))
  18. {
  19. fL.Seek(fL.Offset, SeekOrigin.Begin);
  20. while (fL.Position < fL.Max)
  21. {
  22. _data.Add(br.ReadLine()?.TrimEnd());
  23. }
  24. }
  25. }
  26. #endregion Constructors
  27. #region Properties
  28. public int Count => _data.Count;
  29. #endregion Properties
  30. #region Indexers
  31. public string this[int index] => _data[index].TrimEnd();
  32. #endregion Indexers
  33. #region Methods
  34. public IEnumerator<string> GetEnumerator() => ((IReadOnlyList<string>)_data).GetEnumerator();
  35. IEnumerator IEnumerable.GetEnumerator() => ((IReadOnlyList<string>)_data).GetEnumerator();
  36. #endregion Methods
  37. }
  38. }