ファイル操作のレシピ | マーブルルール

ファイル操作のレシピ

使い方集

スポンサーリンク

LabVIEWでプログラムを書くときの強みの一つは、ユーザーインタフェースであるフロントパネルをドラッグアンドドロップの操作だけで簡単に構築することができることだと思います。

本ブログのまずこれのシリーズでは主にプログラムのアルゴリズムの部分の書き方について解説してきましたが、アルゴリズムを知っているだけではプログラムは書けず、どのような選択肢があるかということも知っておく必要があります。

使い方集は、まずこれのシリーズでステートマシンまでの知識はある程度知っている前提で、アルゴリズム以外に関わるプログラムの書き方について紹介するシリーズです。

本記事ではファイル操作の様々な方法について紹介しています。

スポンサーリンク

ディレクトリの階層を移動する

パスの指定を行う場合に、特定のパスを定数で指定してからそこからの相対パスを使う場合にはパス作成やパスをストリップの関数を使います。

特に下の階層に移動する場合にはパス作成を使用しますが、この場合すぐ下の階層の名前をファイルパスデータあるいは文字列データで指定することができます。

デスクトップからの相対パスで指定

相対的なパスを指定するにはパス作成の関数を使用できますが、システムディレクトリを取得関数を使用することで、どのPC環境にでもあるであろうデスクトップなどの基準となるようなパスを環境に合わせて取得してくれます。

フォルダの指定

フォルダを指定する場合に、そのフォルダが存在していたらそのまま、存在していない場合には新規で作成する場合には、ファイルやフォルダが既存するかをチェック関数のブール出力を使うと便利です。

ファイルやフォルダ選択ダイアログを活用する

ファイルやフォルダをユーザーが指定するような機能を持たせるのに便利なのがファイルダイアログのExpress VIです。

この機能では、オプションで、パターンの指定やボタンの表示、プロンプトのカスタマイズなどが行えます。

テキストファイルに追加保存

ファイルを開く関数は、指定したファイルパスにファイルが存在しない場合には新しくファイルを作成してくれるような設定ができる以外に、既存のファイルがある場合にそのファイルを開くことができます。

ただし、ファイルを開く関数で既存のファイルを開いた場合、「保存の開始位置」は「既にファイルに保存されているデータの続き」ではなく「最初から」となっています。

つまり、既存ファイルを開いた場合に、既存データを上書きしてしまう可能性があります。

これを防ぐためには、「ファイル位置を設定」関数で保存の開始位置を明示的に「end」という指定を行うことになります。

指定したフォルダの中身のファイルを使用する

フォルダに複数のファイルがありそれら一部あるいは全てのファイルに対して何か操作(データの読み取りなど)を行う場合にはフォルダの中身を配列として取得できるフォルダをリスト関数が便利です。

一行ずつ読み取る

ファイルを開いてから中身のデータを読み取る場合、デフォルトではそのデータを丸ごと文字列として取得します。

ただし、場合によっては一度に全データを扱う必要がなく、一行ずつ読みだしたいこともあると思います。

そんな場合には、テキストデータを読み取る関数を右クリックしてライン読み取りの選択肢にチェックを入れておくことで一回テキストデータを読み取る関数を使用するごとに一行ずつ読み取ることができるようになります。

拡張子を自動で補完

ユーザーに保存ファイルを指定させる場合に、ファイル名だけ入力して拡張子を入力していない場合でもエラーが起こらないようにするために拡張子を補完する仕組みを設けると便利です。

これにはファイル拡張子を取得関数を使用します。

指定サイズ以上になったら保存を停止

データを保存する際にファイルのサイズに応じて保存を停止させるといったプログラムを作ることができます。

これにはファイルサイズを取得関数を使用します。ただし、ファイル保存をする場合にはrefnumを扱うのに対しファイルサイズを取得関数はファイルパスを指定する必要があるため、Refnumをパスに変換関数を使用するといった工夫が必要となります。

指定ファイルをファイルエクスプローラで確認

ファイルを扱った後、例えばデータを保存した後、そのファイルをすぐにファイルエクスプローラ上で確認したい、という場合にはファイルシステムで表示関数を置いておくと、ファイルパスを指定すればそのパスをエクスプローラで表示することができます。

本記事では、ファイルIO操作に対して使うであろういくつかの操作のプログラム例を紹介しました。

LabVIEWでは関数パレットさえ開けばそこに各データタイプに対して使用できる関数がまとまっていてどんな操作ができるのかは確認できるのですが、実際に使ってみたり、組み合わせて使うことで便利になるような操作は、ある程度経験が必要だと思います。

この記事がそんな経験の手助けになればうれしいです。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました