com.nttdocomo.fs
クラス Folder

Object
  拡張com.nttdocomo.fs.Folder

public class Folder
extends Object
 [iアプリオプションAPI]

フォルダを定義します。 このクラスのインスタンスはフォルダへのパス名を保持します。 各メソッドは、呼び出された時点でストレージデバイスのそのパス名のフォルダに対して各種の処理を行います。 なお、 "/" をパス区切り文字として扱います。

フォルダクラスでは以下の操作を行うことができます。

実装によっては、同じフォルダの実体(ストレージデバイス上の実際のフォルダ)を表す複数の Folder インスタンスが存在する場合があります。 その場合でも、Folder インスタンスへのメソッド呼び出しはどのインスタンスに対するものであっても同一フォルダへのアクセスとみなされます。 すなわち、例えばある Folder インスタンス f1 でファイルを新たに生成した場合は、 同じフォルダを表す異なる Folder インスタンス f2 に対してそのフォルダに含まれる全てのファイルのインスタンスを取得するメソッドを呼び出すと、 新たに生成したファイルも含む全てのファイルのインスタンスが返されます。

メディアが採用しているファイルシステムによっては、 ファイル名の大文字・小文字が同一視されるものとされないものがありますが、 いずれの場合でも、以下の表のそれぞれの行において、 次の条件が常に成立することが保証されています。

「コード A」欄のコードを実行した後に「コード B」欄のコードを実行した場合、 File インスタンス f と g は、常に 同一ファイルに対するインスタンスである。
No.コード Aコード B
1
Folder folder = ...; // 任意のフォルダ
// そのフォルダ上で新規作成可能な任意のファイル名
String fileName = ....; 
File f = folder.createFile(fileName, ...);
// fileName と folder は左記と同じものとする。
File g = folder.getFile(fileName);
2
File f = ...; // 任意のファイル
String path = f.getPath();
// 得られた絶対パスからファイル名を取り出す
int sep = path.lastIndexOf('/'); 
String fileName = path.substring(sep + 1);
// fileName は左記と同じ文字列とする。
// folder は左記のファイル f が存在するフォルダ
Folder folder = ...;
File g = folder.getFile(fileName);

なお、この条件は、「コード A」欄のコードの実行と 「コードB」欄のコードの実行の間に、 一旦アプリケーションが終了したかどうかにかかわらず成立します。

上記に加えて、同一ファイルを表す任意の File インスタンス f, g について、 f.getPath().equals(g.getPath()) が常に true となることが保証されています。
従って、大文字・小文字が同一視されるファイルシステムにおいて、 それぞれ、大文字・小文字だけが異なるファイル名を指定して getFile(String) などで File インスタンスを生成した場合でも、getPath() の戻り値は、 常に大文字・小文字も含めて同一文字列となります。

以下に、 ファイル名の大文字・小文字の扱い方が異なるファイルシステムにおいても、 正しく動作するコードを書くための留意点を列挙します。


メソッドの概要
 File createFile(String fileName)
           ファイルを生成します。
 File createFile(String fileName, FileAttribute[] attributes)
           ファイルを生成します。
 AccessToken getAccessToken()
           このフォルダへのアクセス権を取得します。
 File getFile(String fileName)
           ファイル名を指定してファイルのインスタンスを取得します。
 File[] getFiles()
           このフォルダに含まれる全てのファイルのインスタンスを取得します。
 long getFreeSize()
           このフォルダの空き容量を取得します。
 String getPath()
           このフォルダのパス名(絶対パス)を取得します。
 StorageDevice getStorageDevice()
           このフォルダの取得元のストレージデバイスインスタンスを取得します。
 boolean isFileAttributeSupported(Class clazz)
           このフォルダ内のファイルでファイルの属性がサポートされているかどうかを取得します。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

getStorageDevice

public StorageDevice getStorageDevice()

このフォルダの取得元のストレージデバイスインスタンスを取得します。

戻り値:
このフォルダの取得元のストレージデバイスインスタンスを返します。

getAccessToken

public AccessToken getAccessToken()

このフォルダへのアクセス権を取得します。

戻り値:
このフォルダへのアクセス権を返します。

getPath

public String getPath()

このフォルダのパス名(絶対パス)を取得します。

戻り値:
このフォルダのパス名(絶対パス)を返します。

getFreeSize

public long getFreeSize()
                 throws java.io.IOException

このフォルダの空き容量を取得します。

フォルダ単位で空き容量を制御できるようなファイルシステムの場合は、 このメソッドはそのフォルダの空き容量を返します。 ファイルシステム全体でしか空き容量を制御できないような場合は、 どのフォルダでも同じファイルシステム全体の空き容量を返します。

戻り値:
このフォルダの空き容量 [bytes] を返します。
例外:
MediaNotFoundException - このフォルダが記録されているメディアが存在しないことを、 システムが検知した場合に発生します。
java.io.IOException - I/O エラーが発生した場合に発生します。

isFileAttributeSupported

public boolean isFileAttributeSupported(Class clazz)

このフォルダ内のファイルでファイルの属性がサポートされているかどうかを取得します。

引数に FileAttribute インタフェースを実装したクラスのクラスオブジェクトを渡すと、 そのクラスのインスタンスが表すファイルの属性をサポートしているかどうかを返します。 例えば、暗号化をサポートしているかどうかを取得するには、

 folder.isFileAttributeSupported(EncryptionAttribute.class);
 
のようにします。

フォルダ単位で引数で指定されたファイルの属性のサポート可否を制御できるようなファイルシステムの場合は、 このメソッドはそのフォルダでのサポート可否を返します。 ファイルシステム全体でしか引数で指定されたファイルの属性のサポート可否を制御できないような場合は、 どのフォルダでも同じサポート可否を返します。

パラメータ:
clazz - ファイルの属性を表すクラスのクラスオブジェクトを指定します。
戻り値:
ファイルの属性がサポートされている場合は true を、 サポートされていない場合は false を返します。
例外:
NullPointerException - 引数 clazz に null が指定された場合に発生します。
IllegalArgumentException - 引数 clazz が FileAttribute 型のサブタイプを表していない場合に発生します。

createFile

public File createFile(String fileName)
                throws java.io.IOException

ファイルを生成します。

 createFile(fileName, null)
 
を呼び出すのと同じです。

なお、ファイルの削除は File.delete() メソッドで行います。

パラメータ:
fileName - 生成するファイル名を指定します。
戻り値:
生成したファイルのインスタンスを返します。
例外:
NullPointerException - 引数 fileName に null が指定された場合に発生します。
FileNotAccessibleException - 引数 fileName で指定されたファイル名が、 システムで規定されている名前付け規則に違反している場合に発生します(ILLEGAL_NAME)。
FileNotAccessibleException - 既にこのフォルダに同名ファイル・フォルダが存在しているため、 ファイルを新規作成できない場合に発生します(ALREADY_EXISTS)。
FileNotAccessibleException - 上記以外の理由(ファイルシステム上のアクセス制限やメディアのライトプロテクト等)で、 指定されたファイルの生成が拒否された場合に発生します(ACCESS_DENIED)。
MediaNotFoundException - このフォルダが記録されているメディアが存在しないことを、 システムが検知した場合に発生します。