Q80:固定長のファイルを読む込む方法を教えて下さい。参考として取込むテキストファイルを添付しております。
A80:
お送り頂いたデータは「タブ区切り」のデータであり、MZPlatformで[テーブル]上に表示するとの前提でご説明を進めます。
「タブ区切り」のデータではない場合にはお手数でも再度ご連絡下さい。
1.テキストファイルの入力
[テキストファイル入力]コンポーネントを使用します。
ファイル名の指定には[ファイル選択ダイアログ]も一緒に使用すると便利です。
メソッド「ファイル名を指定してテキストファイルを読込む」、「開いているファイルから一行ずつ読込む」等を適宜使用します。「ファイル名を指定して・・・」の方は「ファイルを開く/閉じる」の処理は内部で自動的に行われます。
2.読込んだデータをテーブルに設定
方法は幾つか考えれられるかと存じます。以下はご参考になれば幸いです。
@一行ずつ読込んだ場合
[テキストファイル入力]のデータ生成イベントに[文字列格納変数]を接続し、「部分文字列のリストを取得する(正規表現による分割)(Stirng)」を実行します。引数にはタブ区切りを表す「\t」を設定します。
リストが取得できますので、一時的に[リスト格納変数]等に入れ、リスト内のデータを[テーブル(格納変数)]に設定します。
データの個数が予め分っている場合はよいですが、一行のデータ列数に変動がある場合には、[テーブル]の列の必要数を知るために、リストの最大要素数などを記録しておく必要があるかと思います。
データ全体が充分に入るテーブルを作成し、セルの値を設定していきます。
列や行の追加の際、データをリスト形式で設定する場合には
(例:「addRowData(PFObjectList)」)データ数が足りない/多い部分があるとエラーになりますので、リストの要素数が足りなければ予めNULL値等の要素を追加して、データ個数を整えておくことも考えられます。
Aテキストファイルを一度に読込んだ場合
[文字列格納変数]に設定し、「replaceAll(String)」等で「\t」を全て「,」に変更します。
一時的にテキストを[テキストファイル出力]で保存し、それを[CSV入力]で読み込むことが考えられます。
[システム情報]を使うと「実行ディレクトリ」が取得できます。
[ファイル]を使うとファイルの削除などの操作もできます。
テキストファイルの入力については、以前作成した簡単なサンプルファイルがございますので、掲載致します。
関連ファイル:TabReplacement.mzax
備考:「データベース」の「Q&A91」にも掲載。