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

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

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

執筆者:掌田 津耶乃

テキストの読み書き


ここまで説明したのは、基本的に数値などのデータサイズが固定されたものばかりでした。では、テキストの値をスクラッチパッドに保存するにはどうすればよいのでしょうか。

これには、ちょっとばかり手間がかかります。基本的には、テキストの読み書きを行うためのInputStreamReader/InputStreamWriterというものを使えばいいのですが、テキストは値の長さが可変であるため、そのままだとうまく値を読み書きするのが難しいのです。

実際に簡単な例をあげながら説明をしていきましょう。これは、テキストボックスに入力したテキストを終了時に保存し、次回起動の際にそれを読み込んでラベルに表示するサンプルです。

import java.io.*;

import javax.microedition.io.Connector;

import com.nttdocomo.ui.*;

public class SampleIApp extends IApplication {

  public void start() {
    Display.setCurrent(new MainPanel(this));
  }
}

class MainPanel extends Panel implements SoftKeyListener {
  IApplication iapp;
  String msg;
  Label label;
  TextBox text;
  
  MainPanel(IApplication app){
    super();
    this.iapp = app;
    label = new Label();
    label.setSize(200,30);
    this.add(label);
    text = new TextBox("",20,2,TextBox.DISPLAY_ANY);
    this.add(text);
    this.setSoftLabel(Frame.SOFT_KEY_2, "QUIT");
    this.setSoftKeyListener(this);
    load();
  }
  
  public void load(){
    InputStream input = null;
    InputStreamReader reader = null;
    try {
      input = Connector.openInputStream("scratchpad:///0;pos=0");
      reader = new InputStreamReader(input);
      char[] arr = new char[20];
      reader.read(arr);
      label.setText(new String(arr));
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        reader.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
  
  public void save(){
    OutputStream output = null;
    OutputStreamWriter writer = null;
    try {
      output = Connector.openOutputStream("scratchpad:///0;pos=0");
      writer = new OutputStreamWriter(output);
      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];
      writer.write(arr);
      writer.flush();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        output.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
  
  public void softKeyPressed(int arg0) {}

  public void softKeyReleased(int key) {
    switch(key){
    case Frame.SOFT_KEY_2:
      save();
      iapp.terminate();
    }
  }
  
}



  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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