Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class CsvReader : IEnumerable
- {
- IEnumerator _enumerator;
- public CsvReader(string path, string headerToReturn)
- {
- _enumerator = new CsvEnumerator(path, headerToReturn);
- }
- public IEnumerator GetEnumerator()
- {
- return _enumerator;
- }
- static void Main(string[] args)
- {
- CsvReader csvReader = new CsvReader("imdb.csv", "URL");
- foreach (string s in csvReader)
- {
- Console.WriteLine(s);
- }
- Console.WriteLine();
- }
- }
- class CsvEnumerator : IEnumerator
- {
- private FileStream fs;
- private StreamReader sr;
- private string line, headerToReturn;
- private char delimiter = ',';
- private int headerPosition = -1;
- public CsvEnumerator(string path, string headerToReturn)
- {
- this.headerToReturn = headerToReturn;
- fs = File.OpenRead(path);
- if (!fs.CanRead)
- throw new IOException("File cannot be read: " + path);
- sr = new StreamReader(fs);
- if (headerToReturn == null)
- {
- Console.WriteLine("Warning!: Header not specified. Returning all of the text.");
- return;
- }
- if (this.MoveNext())
- {
- string headerStr = (string)this.Current;
- string[] headers = headerStr.Split(delimiter);
- for (int i = 0; i < headers.Length; i++)
- {
- if (headers[i].Equals(headerToReturn))
- headerPosition = i;
- }
- }
- }
- public object Current
- {
- get {
- if(headerPosition != -1)
- return line.Split(delimiter)[headerPosition];
- else
- return line;
- }
- }
- public bool MoveNext()
- {
- line = sr.ReadLine();
- return line != null;
- }
- public void Reset()
- {
- if (sr != null)
- sr.Close();
- sr = new StreamReader(fs);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement