ファイルから文字列データを読み込むには

◆PROCESSING 逆引きリファレンス

 カテゴリー:ファイル操作

ファイルから文字列データを読み込むには

【解説】

PROCESSINGで本格的にファイルを操作するにはJavaの命令を使います。ですが、文字列を単純に読み込むだけで良いなら loadStrings() 命令が便利です。

loadStrings()  は saveStrings() とペアになる命令で、テキストファイルからシンプルに文字列を読み込みます。

【構文】

String[]  line  =  loadStrings( String  filename );
String[]  line  =  loadStrings( String  URL );

【パラメータ】

line      : 読み込まれた文字列配列
fineName : 対象ファイル名
URL     : URLアドレスの文字列

【注意】

パスを与えなかった場合、fileName は スケッチ格納フォルダ配下にあるものとして処理されます。

ローカルファイルのパスではなく Webページの URL を与えると、該当ページの HTML コードを読み取ることも可能です(試していませんが、HTMLだけではなくWeb上のテキストファイルを読み取ることもできそうです)。

loadStrings() が読み取り可能なのはUTF8形式のテキストファイルのみです。他の文字コードで書かれたテキストファイルや、バイナリファイル(画像データなど)は正しく読み取ることができません。

正確には、与えられたファイル名をなんでもかんでもUTF8形式のテキストファイルだと思って読み込んじゃいますので、でたらめな文字列が line に格納される事になります・・・。

line は String型の配列変数です。領域は loadStrings() が確保しますので、私たちは変数の宣言だけすればOKです。

指定されたファイルの読み込みに成功すると、ファイルの1行を配列の1要素として、全行数分格納して戻してきます。

loadstrings%e8%aa%ac%e6%98%8e
読み込みに失敗した場合は(ファイルがない、Webページに接続できないなど)、コンソール領域にエラーメッセージを出力し、lineに null が戻されます。

ただし、その場合でも例外エラ-にはなりません。戻り値が null かどうかはプログラマー側でチェックする必要があります。

本命令を saveStrings()  とペアで利用した場合には、1点だけ注意があります。

ファイルに文字列データを書き込むには」の記事でも解説しましたが、saveStrings()  は書き込み対象となる String 配列に null が格納されていると、空文字ではなく「 null 」という文字列を書き込むのです!。

なんて仕様だ・・・と思いますが、しょうがありません(汗)。

ですのでそんなファイルをloadStrings() で読み込むと、そのまま「 null 」という文字列が読み込まれてしまいます。「だれだ、ファイルに  “null”  なんて文字列を書き込んだやつは・・・」という事になりかねませんので注意して下さい。

【関連記事】

 


サンプルプログラム

テキストファイルを読み込む例:

スケッチ格納フォルダに 「海洋生物.txt」ファイルがある前提です。

loadStrings() でファイルの各行を lineData[] 配列に読み込み、画面に表示しています。下記画像は、該当テキストファイルをサクラエディタで開いた様子です。

loadstrings%e8%aa%ac%e6%98%8e2
2行目は改行のみの行、3行目は saveStrings() で null を書き込んだもの、4行目はタブ文字の行になっています。

下記出力サンプルで、改行のみの行、null、タブ文字がどのように表示されているかに注目してください。画面に表示する際には、文字の範囲がわかるように [ ] で囲っています。

<出力サンプル>
loadstrings%e8%aa%ac%e6%98%8e3

URLを指定して読み込む例:

最初のサンプルを少しだけ変更したものです。

FILE_NAMEでローカルファイル名を指定するのではなく、URLという定数にGoogleのホームページアドレスを指定しています。

実行すると画面に HTMLの内容が表示されるのがわかると思います。

ただしWebページへの接続は、プログラムの実行環境によっては不安定になります(特にテキストとして人間に読ませる目的で書かれていないホームページアドレスなどでは顕著です)。

また接続にも時間がかかりますので、注意して下さい。

<出力サンプル>
loadstrings%e8%aa%ac%e6%98%8e4

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。