前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0
SFXDirectory
ディレクトリを操作するためのクラスです。
#include <SFXDirectory.h.hpp>
class SFXDirectory;
SFMTYPEDEFCLASS(SFXDirectory)

解説

ディレクトリの作成や属性などの情報の取得、ディレクトリ内のファイルやディレクトリの列挙子の取得、テンポラリディレクトリの作成を行います。

参照

SFXFile | SFXPath | ディレクトリ

メンバ

パブリック関数
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
リストの列挙子を保持するクラスです。

SFXDirectory::Create
ディレクトリを作成します。
[ public, static ]
SFCError Create(
    SFXPathConstRef path   // 作成するディレクトリのパス
    Bool force = false     // 強制的に作成するかどうか
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 指定したパスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 既にディレクトリが存在するとき、または失敗したとき : SFERR_FAILED

解説

force を true にすると、ディレクトリが指定したパスに存在しないとき、ディレクトリを作成します。

使用例

// ディレクトリを強制的に作成する
// dir1 が存在しないとき、dir1 は自動的に作成される
SFXDirectory::Create(SFXPath("/dir1/dir2/"), true);

参照

SFXDirectory::Remove


SFXDirectory::DeviceFreeSpace
デバイスの空き容量を取得します。
[ public, static ]
SFCError DeviceFreeSpace(
    UInt32Ptr result   // 空き容量を受け取るポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

使用例

UInt32 space;

// デバイスの空き容量を取得する
SFXDirectory::DeviceFreeSpace(&space); 

参照

SFXDirectory::DeviceTotalSpace


SFXDirectory::DeviceTotalSpace
デバイスの容量を取得します。
[ public, static ]
SFCError DeviceTotalSpace(
    UInt32Ptr result   // 容量を受け取るポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

使用例

UInt32 space;

// デバイスの容量を取得する
SFXDirectory::DeviceTotalSpace(&space); 

参照

SFXDirectory::DeviceFreeSpace


SFXDirectory::Exists
ディレクトリが存在するか調べます。
[ public, static ]
SFCError Exists(
    SFXPathConstRef path   // 存在を調べるディレクトリのパス
    BoolPtr result         // 結果を受け取るポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき、パスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

使用例

Bool b;

// b : Exists 関数による判定結果
SFXDirectory::Exists(SFXPath("/dir1/"), &b);

if (b) {
    // ディレクトリが存在するとき

}

参照

SFXDirectory::IsReadOnly | SFXDirectory::IsSystem


SFXDirectory::GetCreateDate
ディレクトリの作成日時を取得します。
[ public, static ]
SFCError GetCreateDate(
    SFXPathConstRef path   // ディレクトリのパス
    SFXDatePtr result      // 作成日時を受け取るポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき、パスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

使用例

SFXDate date; // 日付クラス

// ディレクトリの作成日時を取得する
SFXDirectory::GetCreateDate(SFXPath("/dir1/"), &date);

SFXDirectory::GetDirectoryEnumerator
ディレクトリ内のディレクトリ列挙子を取得します。
[ public, static ]
SFCError GetDirectoryEnumerator(
    SFXPathConstRef path   // ディレクトリのパス
    EnumeratorPtr result   // 列挙子を受け取るポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき、パスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

使用例

ディレクトリ内の各ディレクトリを取得します。

SFXPath path;
SFXDirectory::Enumerator etor;  

// ディレクトリ列挙子の取得
SFXDirectory::GetDirectoryEnumerator(SFXPath("/dir1/"), &etor);

// ディレクトリを列挙する
while (etor.HasNext()) {
    // "/dir1" 内のディレクトリ パスを順に取得する
    path = etor.GetNext();
    // ログにパス名を表示する
    TRACE("dir = %s", path.Get().GetCString()); 
}

参照

SFXDirectory::GetFileEnumerator | SFXDirectory::Enumerator


SFXDirectory::GetFileEnumerator
ディレクトリ内のファイル列挙子を取得します。
[ public, static ]
SFCError GetFileEnumerator(
    SFXPathConstRef path   // ディレクトリのパス
    EnumeratorPtr result   // 列挙子を受け取るポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき、または指定したパスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

使用例

ディレクトリ内の各ファイルを取得します。

SFXPath path;
SFXDirectory::Enumerator etor;  

// ファイル列挙子の取得
SFXDirectory::GetFileEnumerator(SFXPath("/dir1/"), &etor);

// ファイルを列挙する
while (etor.HasNext()) {
    // "/dir1" 内のファイル パスを順に取得する
    path = etor.GetNext();                       
    // ログにパス名を表示する
    TRACE("file = %s", path.Get().GetCString()); 
}

参照

SFXDirectory::GetDirectoryEnumerator | SFXDirectory::Enumerator


SFXDirectory::GetTemporaryPath
既存のものと重複しないテンポラリ ディレクトリ パスを取得します。
[ public, static ]
SFCError GetTemporaryPath(
    SFXPathConstRef path   // テンポラリ ディレクトリを作成するディレクトリのパス
    SFXPathPtr result      // テンポラリ ディレクトリ パスへのポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき、または指定したパスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

解説

SFXDirectory::GetTemporaryPath 関数は、一時的に作成するディレクトリのために、既存のものと重複しない一時的なテンポラリ ディレクトリ パスを取得するときに使います。

[Note] 注意
一時的でない永続的なディレクトリ パスを取得する場合は、SFXDirectory::GetUniquePath 関数を使います。
[Note] 注意
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());
}

参照

SFXDirectory::GetUniquePath | SFXFile::GetTemporaryPath | SFXFile::GetUniquePath


SFXDirectory::GetUniquePath
既存のものと重複しない永続的なディレクトリ パスを取得します。
[ public, static ]
SFCError GetUniquePath(
    SFXPathConstRef path           // ディレクトリを作成する親ディレクトリのパス
    SFXAnsiStringConstRef prefix   // ディレクトリ名のプレフィックス(接頭辞)
    SFXAnsiStringConstRef suffix   // ディレクトリ名のサフィックス(接尾辞)
    SFXPathPtr result              // ディレクトリ パスへのポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき、または指定したパスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

解説

ディレクトリ名は乱数によって生成されるため、 既に多くのディレクトリが存在する場合、ディレクトリ パスの取得に失敗する可能性があります。

[Note] 注意
乱数で発生させたディレクトリ名がすでに存在する場合、64 回まで繰り返しこの操作をリトライします。 それでも既存のものと重複しないディレクトリ パスを生成できない場合は失敗となります。
[Note] 注意
一時的なテンポラリ ディレクトリ (すぐに削除するディレクトリ) の場合は、SFXDirectory::GetTemporaryPath 関数を使います。

使用例

SFXPath dir("/");
SFXPath path;

if (SFXFile::GetUniquePath(dir, "sfx", "dat", &path) == SFERR_NO_ERROR) {
    // "/sfx7182CBD4dat/" のようなディレクトリ パスが生成される
    TRACE("%s", path.Get().GetCString());
}

参照

SFXDirectory::GetTemporaryPath | SFXFile::GetUniquePath


SFXDirectory::IsReadOnly
ディレクトリが読み込み専用か判定します。
[ public, static ]
SFCError IsReadOnly(
    SFXPathConstRef path   // 調べるディレクトリのパス
    BoolPtr result         // 結果を受け取るポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき、または指定したパスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

使用例

Bool b;

// b : IsReadOnly 関数による判定結果
SFXDirectory::IsReadOnly(SFXPath("/dir1/data.txt"), &b);

if (b) {
    // ディレクトリが読み込み専用の場合
    ...
}

参照

SFXDirectory::Exists | SFXDirectory::IsSystem


SFXDirectory::IsSystem
ディレクトリがシステム ディレクトリか判定します。
[ public, static ]
SFCError IsSystem(
    SFXPathConstRef path   // 調べるディレクトリのパス
    BoolPtr result         // 結果を受け取るポインタ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が null のとき、または指定したパスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

参照

SFXDirectory::Exists | SFXDirectory::IsReadOnly


SFXDirectory::Remove
ディレクトリを削除します。
[ public, static ]
SFCError Remove(
    SFXPathConstRef path   // 削除するディレクトリのパス
    Bool force = false     // 再帰的に削除するかどうか
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 指定したパスがディレクトリでないとき : SFERR_INVALID_PARAM
  • 失敗したとき : SFERR_FAILED

使用例

dir1 の中が空の場合、dir1 を削除します。

if (SFXDirectory::Remove(SFXPath("/dir1/")) == SFERR_NO_ERROR) {
    ...
}

dir1 を再帰的に削除します。

if (SFXDirectory::Remove(SFXPath("/dir1/"), false) == SFERR_NO_ERROR) {
    ....
}

参照

SFXDirectory::Create


SFXDirectory::Enumerator
リストの列挙子を保持するクラスです。
[ 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()); 
}