![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
ディレクトリの作成や属性などの情報の取得、ディレクトリ内のファイルやディレクトリの列挙子の取得、テンポラリディレクトリの作成を行います。
| パブリック関数 | |
|---|---|
| static SFCError |
Create(
SFXPathConstRef path
, Bool force = false
) ディレクトリを作成します。
|
| static SFCError |
DeviceFreeSpace(
UInt32Ptr result
) デバイスの空き容量を取得します。
|
| static SFCError |
DeviceTotalSpace(
UInt32Ptr result
) デバイスの容量を取得します。
|
| static SFCError |
Exists(
SFXPathConstRef path
, BoolPtr result
) ディレクトリが存在するか調べます。
|
| static SFCError |
GetCreateDate(
SFXPathConstRef path
, SFXDatePtr result
) ディレクトリの作成日時を取得します。
|
| static SFCError |
GetDirectoryEnumerator(
SFXPathConstRef path
, EnumeratorPtr result
) ディレクトリ内のディレクトリ列挙子を取得します。
|
| static SFCError |
GetFileEnumerator(
SFXPathConstRef path
, EnumeratorPtr result
) ディレクトリ内のファイル列挙子を取得します。
|
| static SFCError |
GetTemporaryPath(
SFXPathConstRef path
, SFXPathPtr result
) 既存のものと重複しないテンポラリ ディレクトリ パスを取得します。
|
| static SFCError |
GetUniquePath(
SFXPathConstRef path
, SFXAnsiStringConstRef prefix
, SFXAnsiStringConstRef suffix
, SFXPathPtr result
) 既存のものと重複しない永続的なディレクトリ パスを取得します。
|
| static SFCError |
IsReadOnly(
SFXPathConstRef path
, BoolPtr result
) ディレクトリが読み込み専用か判定します。
|
| static SFCError |
IsSystem(
SFXPathConstRef path
, BoolPtr result
) ディレクトリがシステム ディレクトリか判定します。
|
| static SFCError |
Remove(
SFXPathConstRef path
, Bool force = false
) ディレクトリを削除します。
|
| 型 |
|---|
|
Enumerator
リストの列挙子を保持するクラスです。
|
[ public, static ] SFCError Create( SFXPathConstRef path // 作成するディレクトリのパス Bool force = false // 強制的に作成するかどうか );
force を true にすると、ディレクトリが指定したパスに存在しないとき、ディレクトリを作成します。
// ディレクトリを強制的に作成する // dir1 が存在しないとき、dir1 は自動的に作成される SFXDirectory::Create(SFXPath("/dir1/dir2/"), true);
UInt32 space;
// デバイスの空き容量を取得する
SFXDirectory::DeviceFreeSpace(&space);
UInt32 space;
// デバイスの容量を取得する
SFXDirectory::DeviceTotalSpace(&space);
[ public, static ] SFCError Exists( SFXPathConstRef path // 存在を調べるディレクトリのパス BoolPtr result // 結果を受け取るポインタ );
Bool b; // b : Exists 関数による判定結果 SFXDirectory::Exists(SFXPath("/dir1/"), &b); if (b) { // ディレクトリが存在するとき }
[ public, static ] SFCError GetCreateDate( SFXPathConstRef path // ディレクトリのパス SFXDatePtr result // 作成日時を受け取るポインタ );
SFXDate date; // 日付クラス // ディレクトリの作成日時を取得する SFXDirectory::GetCreateDate(SFXPath("/dir1/"), &date);
[ public, static ] SFCError GetDirectoryEnumerator( SFXPathConstRef path // ディレクトリのパス EnumeratorPtr result // 列挙子を受け取るポインタ );
ディレクトリ内の各ディレクトリを取得します。
SFXPath path; SFXDirectory::Enumerator etor; // ディレクトリ列挙子の取得 SFXDirectory::GetDirectoryEnumerator(SFXPath("/dir1/"), &etor); // ディレクトリを列挙する while (etor.HasNext()) { // "/dir1" 内のディレクトリ パスを順に取得する path = etor.GetNext(); // ログにパス名を表示する TRACE("dir = %s", path.Get().GetCString()); }
[ public, static ] SFCError GetFileEnumerator( SFXPathConstRef path // ディレクトリのパス EnumeratorPtr result // 列挙子を受け取るポインタ );
ディレクトリ内の各ファイルを取得します。
SFXPath path; SFXDirectory::Enumerator etor; // ファイル列挙子の取得 SFXDirectory::GetFileEnumerator(SFXPath("/dir1/"), &etor); // ファイルを列挙する while (etor.HasNext()) { // "/dir1" 内のファイル パスを順に取得する path = etor.GetNext(); // ログにパス名を表示する TRACE("file = %s", path.Get().GetCString()); }
[ public, static ] SFCError GetTemporaryPath( SFXPathConstRef path // テンポラリ ディレクトリを作成するディレクトリのパス SFXPathPtr result // テンポラリ ディレクトリ パスへのポインタ );
SFXDirectory::GetTemporaryPath 関数は、一時的に作成するディレクトリのために、既存のものと重複しない一時的なテンポラリ ディレクトリ パスを取得するときに使います。
![]() |
注意 |
|---|---|
| 一時的でない永続的なディレクトリ パスを取得する場合は、SFXDirectory::GetUniquePath 関数を使います。 | |
![]() |
注意 |
|---|---|
| SFXDirectory::GetTemporaryPath 関数は、内部的に接頭辞として "sfx"、接尾辞として "dir" をそれぞれ引数に指定して SFXDirectory::GetUniquePath 関数を呼び出しています。 | |
SFXPath path;
path.Set(SFXAnsiString("/"));
if (SFXDirectory::GetTemporaryPath(path, &path) == SFERR_NO_ERROR) {
// "/8A2949E2/" のようなディレクトリ名が得られる
TRACE("%s", path.Get().GetCString());
}
[ public, static ] SFCError GetUniquePath( SFXPathConstRef path // ディレクトリを作成する親ディレクトリのパス SFXAnsiStringConstRef prefix // ディレクトリ名のプレフィックス(接頭辞) SFXAnsiStringConstRef suffix // ディレクトリ名のサフィックス(接尾辞) SFXPathPtr result // ディレクトリ パスへのポインタ );
ディレクトリ名は乱数によって生成されるため、 既に多くのディレクトリが存在する場合、ディレクトリ パスの取得に失敗する可能性があります。
![]() |
注意 |
|---|---|
| 乱数で発生させたディレクトリ名がすでに存在する場合、64 回まで繰り返しこの操作をリトライします。 それでも既存のものと重複しないディレクトリ パスを生成できない場合は失敗となります。 | |
![]() |
注意 |
|---|---|
| 一時的なテンポラリ ディレクトリ (すぐに削除するディレクトリ) の場合は、SFXDirectory::GetTemporaryPath 関数を使います。 | |
SFXPath dir("/");
SFXPath path;
if (SFXFile::GetUniquePath(dir, "sfx", "dat", &path) == SFERR_NO_ERROR) {
// "/sfx7182CBD4dat/" のようなディレクトリ パスが生成される
TRACE("%s", path.Get().GetCString());
}
[ public, static ] SFCError IsReadOnly( SFXPathConstRef path // 調べるディレクトリのパス BoolPtr result // 結果を受け取るポインタ );
Bool b; // b : IsReadOnly 関数による判定結果 SFXDirectory::IsReadOnly(SFXPath("/dir1/data.txt"), &b); if (b) { // ディレクトリが読み込み専用の場合 ... }
[ public, static ] SFCError IsSystem( SFXPathConstRef path // 調べるディレクトリのパス BoolPtr result // 結果を受け取るポインタ );
[ public, static ] SFCError Remove( SFXPathConstRef path // 削除するディレクトリのパス Bool force = false // 再帰的に削除するかどうか );
dir1 の中が空の場合、dir1 を削除します。
if (SFXDirectory::Remove(SFXPath("/dir1/")) == SFERR_NO_ERROR) {
...
}
dir1 を再帰的に削除します。
if (SFXDirectory::Remove(SFXPath("/dir1/"), false) == SFERR_NO_ERROR) {
....
}
[ public ]
SFMTYPEDEFCLASS(Enumerator)
class Enumerator {
public:
explicit Enumerator (Void);
SFXPath GetNext (Void);
Bool HasNext (Void) const;
Bool IsValid (Void) const;
};
Enumerator クラスは、リストの列挙子を保持するクラスです。
以下のメンバ関数を持ちます。
| GetNext | 次の要素を取得します。要素がない場合 null を返します。 |
| HasNext | 次の要素があるか調べます。 |
| IsValid | 列挙子が有効であるか判定します。 |
ディレクトリ内の各ファイルを取得します。
SFXPath path; SFXDirectory::Enumerator etor; // ファイル列挙子の取得 SFXDirectory::GetFileEnumerator(SFXPath("/dir1/"), &etor); // ファイルを列挙する while (etor.HasNext()) { // "/dir1" 内のファイル パスを順に取得する path = etor.GetNext(); // ログにパス名を表示する TRACE("file = %s", path.Get().GetCString()); }
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|