com.docomostar.fs
クラス Folder

Object
  上位を拡張 com.docomostar.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() の戻り値は、 常に大文字・小文字も含めて同一文字列となります。

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

導入されたバージョン:
Star-1.0

コンストラクタの概要
protected Folder(StorageDevice storageDevice, AccessToken accessToken, String path)
          アプリケーションは直接このクラスのインスタンスを生成することはできません。
 
メソッドの概要
 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
 

コンストラクタの詳細

Folder

protected Folder(StorageDevice storageDevice,
                 AccessToken accessToken,
                 String path)
アプリケーションは直接このクラスのインスタンスを生成することはできません。

メソッドの詳細

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 -
(ILLEGAL_NAME)
引数 fileName で指定されたファイル名が、 システムで規定されている名前付け規則に違反している場合に発生します。
FileNotAccessibleException -
(ALREADY_EXISTS)
既にこのフォルダに同名ファイル・フォルダが存在しているため、 ファイルを新規作成できない場合に発生します。
FileNotAccessibleException -
(ACCESS_DENIED)
上記以外の理由(ファイルシステム上のアクセス制限やメディアのライトプロテクト等)で、 指定されたファイルの生成が拒否された場合に発生します。
MediaNotFoundException -
このフォルダが記録されているメディアが存在しないことを、 システムが検知した場合に発生します。
FileSystemFullException -
このフォルダ、あるいはファイルシステムに空き容量が無いため、 ファイルが生成できなかった場合に発生します。
java.io.IOException -
I/O エラーが発生した場合に発生します。

createFile

public File createFile(String fileName,
                       FileAttribute[] attributes)
                throws java.io.IOException

ファイルを生成します。 ファイルを生成する際にファイルの属性を指定することができますが、 どのファイルの属性が有効かはストレージデバイスやメディアに依存します。 ファイルの属性が有効かどうかは isFileAttributeSupported(java.lang.Class) メソッドで取得することができます。

引数 attributes に null が指定された場合も含めて、 明示的に引数で指定されなかったファイルの属性については、 原則として、ファイルシステムまたはフォルダにおけるデフォルトのファイル属性となります。 ただし、フォルダに設定されている属性の内容によっては、 一部の属性について、フォルダと同じものが設定されることもあります。

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

パラメータ:
fileName - 生成するファイル名を指定します。
attributes - 生成するファイルに付与するファイルの属性の配列を指定します。 null を指定すると、ファイルの属性を指定しないことを表します。
戻り値:
生成したファイルのインスタンスを返します。
例外:
NullPointerException -
引数 fileName に null が指定された場合に発生します。
FileNotAccessibleException -
(ILLEGAL_NAME)
引数 fileName で指定されたファイル名が、 システムで規定されている名前付け規則に違反している場合に発生します。
NullPointerException -
引数 attributes のいずれかの要素に null が指定されている場合に発生します。
IllegalArgumentException -
引数 attributes のいずれかの要素に、サポートされない (isFileAttributeSupported(Class) で false が返されるような) ファイル属性が指定されている場合に発生します。
IllegalArgumentException -
引数 attributes に同じ種類のファイル属性が複数含まれている場合 に発生します。
FileNotAccessibleException -
(ALREADY_EXISTS)
既にこのフォルダに同名ファイル・フォルダが存在しているため、 ファイルを新規作成できない場合に発生します。
FileNotAccessibleException -
(ACCESS_DENIED)
上記以外の理由(ファイルシステム上のアクセス制限やメディアのライトプロテクト等)で、 指定されたファイルの生成が拒否された場合に発生します。
MediaNotFoundException -
このフォルダが記録されているメディアが存在しないことを、 システムが検知した場合に発生します。
FileSystemFullException -
このフォルダ、あるいはファイルシステムに空き容量が無いため、 ファイルが生成できなかった場合に発生します。
java.io.IOException -
I/O エラーが発生した場合に発生します。

getFiles

public File[] getFiles()
                throws java.io.IOException

このフォルダに含まれる全てのファイルのインスタンスを取得します。

このメソッドを呼び出すたびに新たなインスタンスを生成して返すか、 それと

繝代Λ繝。繝シ繧ソ:
fileName - 逕滓