Version 2007.1.x ~
  ファイルの読み込みで1行が32K超えるデータを取り扱う方法を教えてください。

 

以下の2つの方法で、32k以上のデータを1回のReadLine()で取得することができます。

※LONGSTRING有効は、Caché 2007.1以降の新機能になり、最大文字数が360 万文字まで拡張されるため、32K以上のデータを1回のReadLine()で取得することができます。

設定は、管理ポータルの以下のメニューで設定します。

【Caché2007.1】: [構成] > [Advanced Settings] > [Miscellaneous] > EnableLongStrings を有効
【Caché2008.1】: [構成] > [メモリと開始設定] Long String有効にチェック
【Caché2011.1~】: [システム管理] > [構成] > [システム構成] > [メモリと開始設定] > Long String有効:にチェック
※LONGSTRINGを有効にし、32K以上のデータ長の変数を多く保持するとメモリを多く消費しますのでご注意ください。

ReadLineIntoStream() メソッドを使用したサンプルは以下になります。

 

 set file="c:\temp\test.txt"
 set stream = ##class(%Library.FileCharacterStream).%New()
 set stream.Filename = file

 set i=1
  while (stream.AtEnd'=1) {
     set line = stream.ReadLineIntoStream()   // $CHAR(13,10)まで読み込み
     // 1行を1024ずつ格納する
     while (line.AtEnd'=1) {
         set ^test(i)=line.Read(1024)
         set i=i+1
     }
 }
 quit



また、サンプルで使用するファイルを作成するコマンドは以下になります。
 

 set file="c:\temp\test.txt"
 set $p(data,"A",32767)="A"
 set $p(data1,"B",32767)="B"
 open file:"NWU"
 use file w data,data,!,data1,data1
 close file

関連トピック: Cachéが取り扱える文字は最大何文字ですか?
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る