#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
}
}