Javaプログラミング/サーバサイド&ケータイJava

スクラッチパッドでデータを保存する(5ページ目)

今回は、データの保存と読み込みの基本となる「スクラッチパッド」の使い方について説明しましょう。

執筆者:掌田 津耶乃

テキスト保存の流れ


テキストボックスに書いたテキストを終了時に保存し、次回起動時にラベルに表示する。

では、メソッドを見てみましょう。まずは保存のsaveメソッドからです。最初にOutputStreamとOutputStreamWriterを保管する変数を用意しておきます。

OutputStream output = null;
OutputStreamWriter writer = null;


続いて、Connector.openOutputStreamでOutputStreamを作成し、これを引数にしてOutputStreamWriterを作成します。これで、ストリーム関係の準備ができました。

output = Connector.openOutputStream("scratchpad:///0;pos=0");
writer = new OutputStreamWriter(output);

次に、保存するテキストの準備です。テキストは、Stringのまま保存することもできるのですが、そうすると可変長のデータになってしまいます。例えば、長いテキストを保存した後で短いテキストを再度保存すると、前のデータの一部が残ってしまったりするわけです。

そこで、ここでは決まった大きさのchar配列(ここでは20キャラクタ分)を用意し、そこにテキストのキャラクタを1文字ずつコピーしていくことにしました。

char[] arr = new char[20];
char[] arr2 = text.getText().toCharArray();
int n = arr2.length > arr.length ? arr.length : arr2.length;
for(int i = 0;i < n;i++)
  arr[i] = arr2[i];


これで、キャラクタ20文字分のchar配列が作成されました。これを保存すれば、常に同じサイズのデータが保存されることになります。後は、これをスクラッチパッドに書き出すだけです。

writer.write(arr);
writer.flush();


OutputStreamWriterのwriteは、char配列をそのまま保存することができます。最後にcloseでストリームを解放して作業完了です。


テキスト読み込みの流れ


続いて、テキストを読み込むloadメソッドです。こちらも、最初にストリームを保管する変数を用意しておきます。

InputStream input = null;
InputStreamReader reader = null;


そして、InputStreamを作成し、それを引数にしてInputStreamReaderを作成します。

input = Connector.openInputStream("scratchpad:///0;pos=0");
reader = new InputStreamReader(input);


保存されたテキストを読み込むためのchar配列を用意し、そこにreadで読み込みます。後は、char配列を元にStringを作成し、利用すればいいわけですね。

char[] arr = new char[20];
reader.read(arr);
label.setText(new String(arr));

テキストの値は少々扱いが面倒ですが、「テキストを定型の値として読み書きする」ということに注意すれば、後はそう難しくはありませんね。数値とテキストが保管できるようになれば、スクラッチパッドで保存できるデータの幅もだいぶ広がります。いろいろな情報を補完することができそうですね。
【編集部おすすめの購入サイト】
Amazonで Java 関連の書籍をチェック!楽天市場で Java 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます