com.j_phone.io
インタフェース StorageConnection

すべてのスーパーインタフェース:
javax.microedition.io.Connection, javax.microedition.io.InputConnection, javax.microedition.io.OutputConnection, javax.microedition.io.StreamConnection

public interface StorageConnection
extends javax.microedition.io.StreamConnection

ファイルにアクセスするためのインタフェースです。

javax.microedition.io.Connector.open() に "file:" スキームを指定して呼び出すと、 StorageConnectionインタフェースを実装したコネクションオブジェクトが取得できます。 このコネクションオブジェクトを使用して Java アプリケーションから機器内部のデータフォルダ、または外部メモリに存在するファイルにアクセスすることができます。

ファイルまたはフォルダにアクセスするには、Connector.open() メソッドの引数nameに「ファイルURL」を指定します。 ファイルURLは以下のように "file:" スキームに続けてパス名を指定します。

"file://パス名"

パス名は以下のどれかの形式で指定します。フォルダおよびルートを指定するパス名の末尾にはスラッシュ('/')が必要です。

ルートによってアクセスできるデータを指定します。

表1. ルートとアクセス先のデータ
ルート アクセス先のデータ
/ms 機器内部のデータフォルダ
/mc メモリカードのデータフォルダ *1
*1 メモリカードをサポートしている機種でのみ有効です。

著作権が保護されているデータファイルは、Java アプリケーションから作成、削除、名称変更、読み込み、および書き込みを行うことはできません。 list() メソッドによってファイル名を取得したり、ファイルタイプやファイルの長さなどのデータファイルの情報を取得したりすることはできます。

ファイルに対する処理が終了したら、close()メソッドを呼び出してコネクションを閉じてください。

以下に機器内部のデータフォルダにフォルダを新規作成する場合のコード例を示します。

 StorageConnection conn = null;
 try {
     conn = (StorageConnection)Connector.open("file:///ms/test/");
     conn.createFolder();  // フォルダ新規作成
 } catch (Exception e) {
     ...
 } finally {
     if (conn != null) {
         try { conn.close(); } catch (Exception e) {}
     }
 }
 
以下に機器内部のデータフォルダにファイルを作成してデータを書き込む場合のコード例を示します。
 StorageConnection conn = null;
 try {
     conn = (StorageConnection)Connector.open("file:///ms/test/a.txt");
     OutputStream os = null;
     try {
         os = conn.openOutputStream();
         os.write(...);  // データ書き込み
         os.flush();
     } catch (Exception e) {
         ...
     } finally {
         if (os != null) {
             try { os.close(); } catch (Exception e) {}
         }
     }
 } catch (Exception e) {
     ...
 } finally {
     if (conn != null) {
         try { conn.close(); } catch (Exception e) {}
     }
 }
 

ファイルにデータを書き込む場合は、上記のように openOutputStream()メソッドによって取得した出力ストリームを使用します。 ファイルからデータを読み込む場合は、取得したStorageConnectionオブジェクトのopenInputStream()メソッドによって取得した入力ストリームを使用します。

コネクションオブジェクトから同時に取得できるストリームは1つだけです。 openInputStream() または openOutputStream() によってストリームを取得した場合、 そのストリームを閉じる前に openInputStream() または openOutputStream() を呼び出すと IOException が発生します。

以下に機器内部のデータフォルダのファイルを削除する場合のコード例を示します。
 StorageConnection conn = null;
 try {
     conn = (StorageConnection)Connector.open("file:///ms/test/a.txt");
     conn.delete();
     // 削除後は close() 以外のメソッドを使用できません。
 } catch (Exception e) {
     ...
 } finally {
     if (conn != null) {
         try { conn.close(); } catch (Exception e) {}
     }
 }
 

導入されたバージョン:
JSCL 1.2

フィールドの概要
static java.lang.String ROOT_EXTERNAL
          外部メモリデータフォルダのルートパスを示します("/mc/")。
static java.lang.String ROOT_INTERNAL
          機器内部データフォルダのルートパスを示します("/ms/")。
static int TYPE_EML
          EML(*.eml)ファイルタイプです。
static int TYPE_FOLDER
          フォルダです。
static int TYPE_HTML
          HTML(*.htm、*.html)ファイルタイプです。
static int TYPE_JPEG
          JPEG(*.jpg、*.jpe、*.jpeg、*.jpz)ファイルタイプです。
static int TYPE_MNG
          MNG(*.mng)ファイルタイプです。
static int TYPE_MP4
          MP4(*.mp4)ファイルタイプです。
static int TYPE_MPEG4
          MPEG4(*.3gp)ファイルタイプです。
static int TYPE_NANCY
          NANCY(*.noa)ファイルタイプです。
static int TYPE_OTHER
          その他のファイルタイプです。
static int TYPE_PNG
          PNG(*.png、*.pnz)ファイルタイプです。
static int TYPE_SMAF
          SMAF(*.mmf)ファイルタイプです。
static int TYPE_SMD
          SMD(*.smd、*.smz、*.smx)ファイルタイプです。
static int TYPE_TXT
          TXT(*.txt)ファイルタイプです。
static int TYPE_VBOOKMARK
          vBookmark(*.vbm、*.url)ファイルタイプです。
static int TYPE_VCALENDAR
          vCalendar(*.vcs)ファイルタイプです。
static int TYPE_VCARD
          vCard(*.vcf)ファイルタイプです。
static int TYPE_VMESSAGE
          vMessage(*.vmg)ファイルタイプです。
static int TYPE_VNOTE
          vNote(*.vnt)ファイルタイプです。
static int TYPE_ZIP
          ZIP(*.zip)ファイルタイプです。
 
メソッドの概要
 void close()
          コネクションを閉じます。
 boolean createFolder()
          フォルダを新規に作成します。
 boolean delete()
          ファイルまたはフォルダを削除します。
 boolean exists()
          ファイルまたはフォルダが存在するかどうかを判定します。
 long getLength()
          ファイルの長さを取得します。
 int getType()
          ファイルタイプを表す整数を取得します。
 java.lang.String getTypeString()
          ファイルタイプを表す文字列を取得します。
 boolean isCopyrighted()
          著作権が保護されたデータファイルであるかどうかを判定します。
 boolean isFile()
          ファイルかどうかを判定します。
 boolean isFolder()
          フォルダかどうかを判定します。
 java.lang.String[] list()
          フォルダの直下に存在するファイルおよびフォルダの名前の配列を取得します。
 java.io.InputStream openInputStream()
          ファイルに対する入力ストリームを開きます。
 java.io.OutputStream openOutputStream()
          ファイルに対する出力ストリームを開きます。
 boolean renameTo(java.lang.String newName)
          ファイルまたはフォルダの名前を変更します。
 
インタフェース javax.microedition.io.InputConnection から継承したメソッド
openDataInputStream
 
インタフェース javax.microedition.io.OutputConnection から継承したメソッド
openDataOutputStream
 

フィールドの詳細

ROOT_INTERNAL

public static final java.lang.String ROOT_INTERNAL
機器内部データフォルダのルートパスを示します("/ms/")。

ROOT_EXTERNAL

public static final java.lang.String ROOT_EXTERNAL
外部メモリデータフォルダのルートパスを示します("/mc/")。

TYPE_FOLDER

public static final int TYPE_FOLDER
フォルダです。

TYPE_ZIP

public static final int TYPE_ZIP
ZIP(*.zip)ファイルタイプです。

TYPE_HTML

public static final int TYPE_HTML
HTML(*.htm、*.html)ファイルタイプです。

TYPE_PNG

public static final int TYPE_PNG
PNG(*.png、*.pnz)ファイルタイプです。

TYPE_MNG

public static final int TYPE_MNG
MNG(*.mng)ファイルタイプです。

TYPE_JPEG

public static final int TYPE_JPEG
JPEG(*.jpg、*.jpe、*.jpeg、*.jpz)ファイルタイプです。

TYPE_SMAF

public static final int TYPE_SMAF
SMAF(*.mmf)ファイルタイプです。

TYPE_SMD

public static final int TYPE_SMD
SMD(*.smd、*.smz、*.smx)ファイルタイプです。

TYPE_TXT

public static final int TYPE_TXT
TXT(*.txt)ファイルタイプです。

TYPE_NANCY

public static final int TYPE_NANCY
NANCY(*.noa)ファイルタイプです。

TYPE_VCARD

public static final int TYPE_VCARD
vCard(*.vcf)ファイルタイプです。

TYPE_VBOOKMARK

public static final int TYPE_VBOOKMARK
vBookmark(*.vbm、*.url)ファイルタイプです。

TYPE_VCALENDAR

public static final int TYPE_VCALENDAR
vCalendar(*.vcs)ファイルタイプです。

TYPE_VMESSAGE

public static final int TYPE_VMESSAGE
vMessage(*.vmg)ファイルタイプです。

TYPE_VNOTE

public static final int TYPE_VNOTE
vNote(*.vnt)ファイルタイプです。

TYPE_EML

public static final int TYPE_EML
EML(*.eml)ファイルタイプです。

TYPE_MPEG4

public static final int TYPE_MPEG4
MPEG4(*.3gp)ファイルタイプです。

TYPE_OTHER

public static final int TYPE_OTHER
その他のファイルタイプです。 Java アプリケーションからアクセス可能で、他のファイルタイプが割り当てられていないファイルがすべて当てはまります。

TYPE_MP4

public static final int TYPE_MP4
MP4(*.mp4)ファイルタイプです。
メソッドの詳細

exists

public boolean exists()
               throws java.io.IOException
ファイルまたはフォルダが存在するかどうかを判定します。
戻り値:
Connector.open() に指定されたパス名が示すファイルまたはフォルダが存在する場合は true、そうでない場合は false
例外:
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • その他の入出力エラー

getType

public int getType()
            throws java.io.IOException
ファイルタイプを表す整数を取得します。
戻り値:
Connector.open() に指定されたパス名が示すファイルまたはフォルダのタイプを以下のどれかの値で返す
例外:
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定されたファイルまたはフォルダが存在しない、または Java アプリケーションから不可視
  • その他の入出力エラー

getTypeString

public java.lang.String getTypeString()
                               throws java.io.IOException
ファイルタイプを表す文字列を取得します。
戻り値:
Connector.open() に指定されたパス名が示すファイルまたはフォルダのタイプを表す文字列を以下のどれかの値で返す
  • "FOLDER"
  • "ZIP"
  • "HTML"
  • "PNG"
  • "MNG"
  • "JPEG"
  • "SMAF"
  • "SMD"
  • "TXT"
  • "NANCY"
  • "vCard"
  • "vBookmark"
  • "vCalendar"
  • "vMessage"
  • "vNote"
  • "EML"
  • "MPEG4"
  • "MP4"
  • "OTHER"
例外:
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定されたファイルまたはフォルダが存在しない、または Java アプリケーションから不可視
  • その他の入出力エラー

getLength

public long getLength()
               throws java.io.IOException
ファイルの長さを取得します。
戻り値:
Connector.open() に指定されたパス名が示すファイルの長さをバイト単位で返す。フォルダの場合は0を返す。
例外:
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定されたファイルまたはフォルダが存在しない、または Java アプリケーションから不可視
  • その他の入出力エラー

isFolder

public boolean isFolder()
                 throws java.io.IOException
フォルダかどうかを判定します。
戻り値:
Connector.open() に指定されたパス名がフォルダを示す場合は true、そうでない場合は false
例外:
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定したファイルまたはフォルダが存在しない、または Java アプリケーションから不可視
  • その他の入出力エラー

isFile

public boolean isFile()
               throws java.io.IOException
ファイルかどうかを判定します。
戻り値:
Connector.open() に指定されたパス名がファイルを示す場合は true、そうでない場合は false
例外:
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定したファイルまたはフォルダが存在しない、または Java アプリケーションから不可視
  • その他の入出力エラー

isCopyrighted

public boolean isCopyrighted()
                      throws java.io.IOException
著作権が保護されたデータファイルであるかどうかを判定します。
戻り値:
Connector.open() に指定されたパス名が著作権保護データファイルを示す場合は true、そうでない場合は false を返す。 フォルダの場合は false を返す。
例外:
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定したファイルまたはフォルダが存在しない、または Java アプリケーションから不可視
  • その他の入出力エラー

list

public java.lang.String[] list()
                        throws java.io.IOException
フォルダの直下に存在するファイルおよびフォルダの名前の配列を取得します。

Connector.open() に指定されたパス名が示すフォルダの直下に存在するすべてのファイル、およびフォルダの名前を取得します。 このメソッドはルートまたはフォルダを示すパス名を指定した場合に呼び出すことができます。

戻り値:
指定されたパス名がフォルダを示す場合、フォルダの直下に存在するファイルおよびフォルダの名前文字列の配列を返す。 フォルダ名にはファイル名と区別するためにスラッシュ('/')が付加される。Java アプリケーションから不可視のファイルおよびフォルダの名前は含まれない。 指定されたフォルダが空、または Java アプリケーションから不可視のファイルおよびフォルダだけの場合は要素数が0の配列を返す。
例外:
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定されたパス名がルートまたはフォルダを示していない
  • 指定されたフォルダが存在しない、または Java アプリケーションから不可視
  • その他の入出力エラー

createFolder

public boolean createFolder()
                     throws java.io.IOException
フォルダを新規に作成します。

Connector.open() に指定されたパス名が示すフォルダを新規に作成します。 このメソッドは、フォルダを示すパス名を指定した場合に呼び出すことができます。 指定されたフォルダの親フォルダが存在しない場合は IOException が発生します。

戻り値:
フォルダの作成に成功した場合は true、そうでない場合は false
例外:
SecurityException - アクセスの制限された Java アプリケーションから呼び出された場合、またはユーザーがキャンセルを選択した場合に発生する
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定されたパス名が不正
  • 指定されたフォルダと同名のファイルまたはフォルダが存在
  • その他の入出力エラー

renameTo

public boolean renameTo(java.lang.String newName)
                 throws java.io.IOException
ファイルまたはフォルダの名前を変更します。

Connector.open() に指定されたパス名が示すファイルまたはフォルダの名前を変更します。 著作権が保護されたデータファイルの名前は変更できません。 指定されたフォルダと同名のフォルダまたはファイルが存在する場合、名前の変更はできません。 このメソッドを呼び出したらすぐに close() メソッドを呼び出してコネクションを閉じてください。

パラメータ:
newName - 新しい名前
戻り値:
指定されたファイルまたはフォルダの名前の変更に成功した場合は true、そうでない場合は false
例外:
NullPointerException - 引数newName に null が指定された場合に発生する
SecurityException - 以下の場合に発生する
  • アクセスの制限された Java アプリケーションから呼び出された
  • 指定されたパス名が著作権保護データファイルを示している
  • ユーザーがキャンセルを選択した
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定されたファイルまたはフォルダが存在しない、または Java アプリケーションから不可視
  • 指定されたファイルと同名のフォルダが存在
  • 指定されたフォルダと同名のファイルが存在
  • その他の入出力エラー

delete

public boolean delete()
               throws java.io.IOException
ファイルまたはフォルダを削除します。

Connector.open() に指定されたパス名が示すファイルまたはフォルダを削除します。 著作権が保護されたデータファイルおよび配下にファイルやフォルダが存在するフォルダは削除できません。 このメソッドを呼び出したらすぐに close() メソッドを呼び出してコネクションを閉じてください。

戻り値:
指定されたファイルまたはフォルダの削除に成功した場合は true、そうでない場合は false
例外:
SecurityException - 以下の場合に発生する
  • アクセスの制限された Java アプリケーションから呼び出された
  • 指定されたパス名が著作権保護データファイルを示している
  • ユーザーがキャンセルを選択した
java.io.IOException - 以下の場合に発生する
  • コネクションが閉じている
  • 指定されたファイルまたはフォルダが存在しない、または Java アプリケーションから不可視
  • 指定されたファイルに書き込みができない
  • その他の入出力エラー

close

public void close()
           throws java.io.IOException
コネクションを閉じます。

閉じているコネクションに対して close() 以外のメソッドを呼び出した場合は IOException が発生します。

定義:
インタフェース javax.microedition.io.Connection 内の close
例外:
java.io.IOException - 入出力エラーが発生した場合に発生する

openInputStream

public java.io.InputStream openInputStream()
                                    throws java.io.IOException
ファイルに対する入力ストリームを開きます。

Connector.open() に指定されたパス名が示すファイルからデータを読み込むための入力ストリームを開きます。

定義:
インタフェース javax.microedition.io.InputConnection 内の openInputStream
戻り値:
指定されたファイルからバイト列を読み込むための入力ストリーム
例外:
SecurityException - アクセスの制限された Java アプリケーションから呼び出された場合、または著作権保護データファイルの場合に発生する
java.io.IOException - 以下の場合に発生する
  • Connector.open() の引数modeConnector.WRITEが指定された
  • コネクションが閉じている
  • 指定されたパス名がルートまたはフォルダを示している
  • 指定されたファイルが存在しない、または Java アプリケーションから不可視
  • 指定されたファイルまたは他のファイルに対してストリームが開いている
  • その他の入出力エラー

openOutputStream

public java.io.OutputStream openOutputStream()
                                      throws java.io.IOException
ファイルに対する出力ストリームを開きます。

Connector.open() に指定されたパス名が示すファイルにデータを書き込むための出力ストリームを開きます。 指定されたファイルが存在する場合はファイルサイズを0にします。

定義:
インタフェース javax.microedition.io.OutputConnection 内の openOutputStream
戻り値:
指定されたファイルにバイト列を書き込むための出力ストリーム
例外:
SecurityException - 以下の場合に発生する
  • アクセスの制限された Java アプリケーションから呼び出された
  • 指定されたパス名が著作権保護データファイルを示している
  • ユーザーがキャンセルを選択した
java.io.IOException - 以下の場合に発生する
  • Connector.open() の引数 modeConnector.READが指定された
  • コネクションが閉じている
  • 指定されたパス名がルートまたはフォルダを示している
  • 指定されたファイルと同名のフォルダが存在
  • 指定されたファイルまたは他のファイルに対してストリームが開いている
  • その他の入出力エラー