#region Using using System; using System.Collections.Generic; using System.Text; #endregion namespace Wankuma.IO { /// /// CSVデータをEnumarble形式で取得します。 /// public class CSVReaderEnumarble : CSVReader { #region public int カラム数 /// /// カラム数の内部変数 /// private int カラム数_; /// /// 取得するカラム数を指定します。 /// public int カラム数 { get { return this.カラム数_; } private set { this.カラム数_ = value; } } #endregion #region public CSVReaderEnumarble(int カラム数, System.IO.Stream stream)  指定したストリーム用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定したストリーム用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定カラム数必ず取得します。 /// 読み込まれるストリーム。 /// stream が null です。 /// stream が読み取りをサポートしていません。 public CSVReaderEnumarble(int カラム数, System.IO.Stream stream) : base(stream) { this.カラム数 = カラム数; } #endregion #region public CSVReaderEnumarble(int カラム数, System.IO.Stream stream, char 区切り文字) 指定したストリーム用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定したストリーム用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定カラム数必ず取得します。 /// 読み込まれるストリーム。 /// カンマ以外の区切り文字を利用したい場合に使います。 /// stream が null です。 /// stream が読み取りをサポートしていません。 public CSVReaderEnumarble(int カラム数, System.IO.Stream stream, char 区切り文字) : base(stream, 区切り文字) { this.カラム数 = カラム数; } #endregion #region public CSVReaderEnumarble(int カラム数, System.IO.TextReader reader) 指定したリーダ用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定したリーダ用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定カラム数必ず取得します。 /// 読み込みを行うリーダ /// stream が null です。 /// stream が読み取りをサポートしていません。 public CSVReaderEnumarble(int カラム数, System.IO.TextReader reader) : base(reader) { this.カラム数 = カラム数; } #endregion #region public CSVReaderEnumarble(int カラム数, System.IO.TextReader reader, char 区切り文字) 指定したリーダ用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定したリーダ用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定カラム数必ず取得します。 /// 読み込みを行うリーダ /// カンマ以外の区切り文字を利用したい場合に使います。 /// stream が null です。 /// stream が読み取りをサポートしていません。 public CSVReaderEnumarble(int カラム数, System.IO.TextReader reader, char 区切り文字) : base(reader, 区切り文字) { this.カラム数 = カラム数; } #endregion #region public CSVReaderEnumarble(int カラム数, string path) 指定したファイル名用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定したファイル名用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定カラム数必ず取得します。 /// 読み込まれる完全なファイルパス。 /// path に、ファイル名、ディレクトリ名、またはボリューム ラベルとしては不正または無効な構文が含まれています。 /// path が null です。 /// path が空の文字列 ("") です。 /// 割り当てられていないドライブであるなど、指定されたパスが無効です。 /// ファイルが見つかりません。 public CSVReaderEnumarble(int カラム数, string path) : base(path) { this.カラム数 = カラム数; } #endregion #region public CSVReaderEnumarble(int カラム数, string path) 指定したファイル名用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定したファイル名用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定カラム数必ず取得します。 /// 読み込まれる完全なファイルパス。 /// カンマ以外の区切り文字を利用したい場合に使います。 /// path に、ファイル名、ディレクトリ名、またはボリューム ラベルとしては不正または無効な構文が含まれています。 /// path が null です。 /// path が空の文字列 ("") です。 /// 割り当てられていないドライブであるなど、指定されたパスが無効です。 /// ファイルが見つかりません。 public CSVReaderEnumarble(int カラム数, string path, char 区切り文字) : base(path, 区切り文字) { this.カラム数 = カラム数; } #endregion #region public CSVReaderEnumarble(int カラム数, string path, Encoding encoding) 指定したファイル名用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定したファイル名用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定カラム数必ず取得します。 /// 読み込まれる完全なファイルパス。 /// 使用する文字エンコーディング。 /// path に、ファイル名、ディレクトリ名、またはボリューム ラベルとしては不正または無効な構文が含まれています。 /// path が null です。 /// path が空の文字列 ("") です。 /// 割り当てられていないドライブであるなど、指定されたパスが無効です。 /// ファイルが見つかりません。 public CSVReaderEnumarble(int カラム数, string path, Encoding encoding) : base(path, encoding) { this.カラム数 = カラム数; } #endregion #region public CSVReaderEnumarble(int カラム数, string path, Encoding encoding, char 区切り文字) 指定したファイル名用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定したファイル名用の System.IO.StreamReader を利用して新しいインスタンスを初期化します。 /// /// 指定カラム数必ず取得します。 /// 読み込まれる完全なファイルパス。 /// 使用する文字エンコーディング。 /// カンマ以外の区切り文字を利用したい場合に使います。 /// path に、ファイル名、ディレクトリ名、またはボリューム ラベルとしては不正または無効な構文が含まれています。 /// path が null です。 /// path が空の文字列 ("") です。 /// 割り当てられていないドライブであるなど、指定されたパスが無効です。 /// ファイルが見つかりません。 public CSVReaderEnumarble(int カラム数, string path, Encoding encoding, char 区切り文字) : base(path, encoding, 区切り文字) { this.カラム数 = カラム数; } #endregion #region public IEnumerable> RowEnumarble() 行を取得します。 /// /// 行を取得します。 /// /// CSVの行 public IEnumerable> RowEnumarble() { //ファイルが終了するまで行を繰り返します。 while (this.ファイル終了フラグ == false) { yield return Cols(); } yield break; } #endregion #region public IEnumerable RowArray() 行を取得します。 /// /// 行を取得します。 /// /// CSVの行 public IEnumerable RowArray() { //ファイルが終了するまで行を繰り返します。 while (this.ファイル終了フラグ == false) { List ReturnArray = new List(); foreach (string data in Cols()) { ReturnArray.Add(data); } yield return ReturnArray.ToArray(); } yield break; } #endregion #region public IEnumerable> RowList() 行を取得します。 /// /// 行を取得します。 /// /// CSVの行 public IEnumerable> RowList() { //ファイルが終了するまで行を繰り返します。 while (this.ファイル終了フラグ == false) { List ReturnArray = new List(); foreach (string data in Cols()) { ReturnArray.Add(data); } yield return ReturnArray; } yield break; } #endregion #region private IEnumerable Cols() カラムを取得します。 /// /// カラムを取得します。 /// /// private IEnumerable Cols() { for (int LoopCounter = 0; LoopCounter < this.カラム数; LoopCounter++) { yield return ReadColumn(); } //行送り this.MoveNextRow(); yield break; } #endregion } }