`
阿尔萨斯
  • 浏览: 4186141 次
社区版块
存档分类
最新评论

C# - CSV file reader

 
阅读更多
// --------------------------------------------------------------------------------------------------------------------
// <summary>
//   Defines the CSVFileReader type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace CSVFileReader
{
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;

    /// <summary>
    /// Reads a CSV file.
    /// </summary>
    public class CSVFileReader
    {
        /// <summary>
        /// The stream reader to process the CSV file reading.
        /// </summary>
        private StreamReader streamReader;

        /// <summary>
        /// Initializes a new instance of the <see cref="CSVFileReader"/> class.
        /// </summary>
        /// <param name="csvFilePath">
        /// The CSV file path.
        /// </param>
        /// <param name="delimiter">
        /// The delimiter.
        /// </param>
        public CSVFileReader(string csvFilePath, char delimiter)
        {
            this.CSVFilePath = csvFilePath;
            this.Delimiter = delimiter;
        }

        /// <summary>
        /// Finalizes an instance of the <see cref="CSVFileReader"/> class. 
        /// </summary>
        ~CSVFileReader()
        {
            this.Close();
        }

        /// <summary>
        /// Gets the CSV file path being read.
        /// </summary>
        public string CSVFilePath { get; private set; }

        /// <summary>
        /// Gets the delimiter used within the CSV file.
        /// </summary>
        public char Delimiter { get; private set; }

        /// <summary>
        /// Read a line from the CSV file into a list of strings.
        /// </summary>
        /// <returns>
        /// The list of string.
        /// </returns>
        public List<string> ReadLine()
        {
            this.Open();
            var resultElements = new List<string>();
            try
            {
                var currentLine = this.streamReader.ReadLine();
                if (currentLine != null)
                {
                    var currentLineElements = currentLine.Split(this.Delimiter);
                    resultElements.AddRange(currentLineElements);
                }
            }
            catch (Exception)
            {
                this.Close();
            }

            return resultElements;
        }

        /// <summary>
        /// Opens the stream reader.
        /// </summary>
        private void Open()
        {
            if (this.streamReader == null)
            {
                this.streamReader = new StreamReader(this.CSVFilePath, Encoding.GetEncoding(1252));
            }
        }

        /// <summary>
        /// Close the stream reader.
        /// </summary>
        private void Close()
        {
            if (this.streamReader == null)
            {
                return;
            }

            this.streamReader.Close();
            this.streamReader.Dispose();
        }
    }
}
// --------------------------------------------------------------------------------------------------------------------
// <summary>
//   Defines the Program type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace CSVFileReader
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    /// The program.
    /// </summary>
    public static class Program
    {
        /// <summary>
        /// The main method.
        /// </summary>
        public static void Main()
        {
            var foo = new CSVFileReader(@"C:\Users\Administrator\Desktop\Tmp.csv", ',');
            List<string> line;
            while ((line = foo.ReadLine()).Count != 0)
            {
                foreach (var item in line)
                {
                    Console.Write(item + "|");
                }

                Console.WriteLine(string.Empty);
            }
        }
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics