SoftwareEngineering/ProgramLanguage/WSH/JScript

/// ---------------------------------------------------------------------------
/// <summary>Stream オブジェクトに保存するデータの種類を表します</summary>
/// ---------------------------------------------------------------------------
var StreamTypeEnum = {
     adTypeBinary : 1   // バイナリ データを表します
    ,adTypeText : 2     // 既定値です。Charset で指定された文字セットにあるテキスト データを表します
}



/// ---------------------------------------------------------------------------
/// <summary>Stream オブジェクトから、ストリーム全体、または次の行を読み取るかどうかを表します</summary>
/// ---------------------------------------------------------------------------
var StreamReadEnum = {
     adReadAll : -1     // 既定値です。現在の位置から EOS マーカー方向に、すべてのバイトをストリームから読み取ります。
    ,adReadLine : -2    // ストリームから次の行を読み取ります
}



/// ---------------------------------------------------------------------------
/// <summary>テキスト Streamオブジェクトの行区切りに使われている文字を表します</summary>
/// ---------------------------------------------------------------------------
var LineSeparatorsEnum = {
     adCR : 13      // 改行復帰を示します。
    ,adCRLF : -1    // 既定値です。改行復帰行送りを示します。
    ,adLF : 10      // 行送りを示します。
}



/// ---------------------------------------------------------------------------
/// <summary>CSVファイルを読み込むクラス</summary>
/// ---------------------------------------------------------------------------
CSVFileStream = function() {
    this.readingFile = new ActiveXObject('ADODB.Stream');
}


/// ---------------------------------------------------------------------------
/// <summary>CSVファイルを開く</summary>
/// <param name="AFileName">Stream に読み込むファイルの名前</param>
/// <param name="ACharset">読み込むファイルの文字コード</param>
/// <param name="ALineSeparator">行区切りに使われている文字</param>
/// <param name="ADelimiter">列区切りに使われている文字</param>
/// ---------------------------------------------------------------------------
CSVFileStream.prototype.open = function(AFileName, ACharset, ALineSeparator, ADelimiter) {
    this.delimiter = ADelimiter;
    
    this.readingFile.Type = StreamTypeEnum.adTypeText;
    this.readingFile.Charset = ACharset;
    this.readingFile.LineSeparator = ALineSeparator;
    this.readingFile.Open();
    this.readingFile.LoadFromFile(AFileName);
}


/// ---------------------------------------------------------------------------
/// <summary>CSVファイルを閉じる</summary>
/// ---------------------------------------------------------------------------
CSVFileStream.prototype.close = function() {
    if (!this.readingFile) return;
    this.readingFile.Close();
}


/// ---------------------------------------------------------------------------
/// <summary>クラス内で動的に確保したメモリを解放する</summary>
/// ---------------------------------------------------------------------------
CSVFileStream.prototype.dispose = function() {
    this.readingFile = null;
}


/// ---------------------------------------------------------------------------
/// <summary>CSVデータの次の行を取得する</summary>
/// <returns>次の行を配列で戻す</returns>
/// ---------------------------------------------------------------------------
CSVFileStream.prototype.next = function() {
    if (!this.readingFile) return null;
    if (!this.hasNext) return null;
    
    return this.readingFile.ReadText(StreamReadEnum.adReadLine).split(this.delimiter);
}


/// ---------------------------------------------------------------------------
/// <summary>次の行が存在するか戻す</summary>
/// <returns>次の行が存在すればtrueを戻し、それ以外はfalseを戻す</returns>
/// ---------------------------------------------------------------------------
CSVFileStream.prototype.hasNext = function() {
    return (!this.readingFile.EOS);
}
/// ---------------------------------------------------------------------------
/// <summary>標準出力画面に値を表示する</summary>
/// ---------------------------------------------------------------------------
function echo(AMessages) {
    var _Message = '';
    for (var _Index = 0; _Index < arguments.length; _Index++) {
        _Message += arguments[_Index];
    }
    WScript.Echo(_Message);
}



/// ---------------------------------------------------------------------------
/// <summary>文字列を置き換える</summary>
/// ---------------------------------------------------------------------------
function sprintf(ATemplate) {
    if (ATemplate == undefined) return '';
    if (ATemplate == null) return '';
    
    var _Value = ATemplate;
    for (var i = 1; i < arguments.length; i++) {
        var _RegExp = new RegExp('\\{' + (i - 1) + '\\}', 'g');
        _Value = _Value.replace(_RegExp, arguments[i]);
    }
    
    return _Value;
}



try {
    
    var _CSVFileStream = new CSVFileStream();
    
    _CSVFileStream.open('org.codereign.jscript.io.CSVFileStream.txt', 'utf-8', LineSeparatorsEnum.adCRLF, ',');
    
    
    while (_CSVFileStream.hasNext()) {
        var _Fields = _CSVFileStream.next();
        echo(sprintf('{0}:{1}:{2}:{3}:{4}', _Fields[0], _Fields[1], _Fields[2], _Fields[3], _Fields[4]));
    }
    
    
    _CSVFileStream.close();
    _CSVFileStream.dispose();
    _CSVFileStream = null;
    
} catch(e) {
    echo(e.message);
}

トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS