ディレクトリ作成、削除、存在確認

ファイル処理9

ファイルに続き、ディレクトリ(フォルダ)に対する操作をまとめます。
なお、ディレクトリ名の変更はファイル名変更、移動、削除、存在確認を参照してください。

ディレクトリ(フォルダ)作成

ディレクトリの作成にはmkdir関数(_mkdir関数)を使用します。
この関数の使用には「#include <direct.h>」が必要です。

#include <stdio.h>
#include <direct.h>

int main()
{
    const char *file = "C:\\NewFolder";

    if (_mkdir(dir) == 0)
        printf("ディレクトリ%sを作成しました。\n", dir);
    else
        printf("ディレクトリ%sを作成できませんでした。\n。", dir);

    getchar();
}
int mkdir(
 const char *dirname
);
ディレクトリdirnameを作成する。
戻り値は成功時に0を返す。
失敗すると0以外を返す。

Visual Studioではmkdir関数は使用できないので、代わりに_mkdir関数を使用します。
(使い方は同じです)

指定したディレクトリが既に存在する場合、mkdir関数は失敗します。
また、指定したディテクトリ名に存在しないディレクトリ名が含まれる場合も失敗します。

#include <stdio.h>
#include <direct.h>

int main()
{
    const char *file = "C:\\ABC\\NewFolder";

    //「C:\ABC」というディレクトリが存在しないと
    //mkdir関数は失敗する
    if (_mkdir(dir) == 0)
        printf("ディレクトリ%sを作成しました。\n", dir);
    else
        printf("ディレクトリ%sを作成できませんでした。\n。", dir);

    getchar();
}

ディレクトリの削除

ディレクトリを削除するにはrmdir関数(_rmdir関数)を使用します。
この関数の使用には「#include <direct.h>」が必要です。

#include <stdio.h>
#include <direct.h>

int main()
{
    const char *dir = "C:\\ABC";

    if(_rmdir(dir) == 0)
        printf("ディレクトリ%sを削除しました。\n", dir);
    else
        printf("ディレクトリ%sを削除できません。\n。", dir);

    getchar();
}
int rmdir(
 const char *dirname
);
ディレクトリdirnameを削除する。
戻り値は成功時に0を返す。
失敗すると0以外を返す。

Visual Studioではrmdir関数は使用できないので、代わりに_rmdir関数を使用します。
(使い方は同じです)

ディレクトリを削除するには、そのディレクトリが空である必要があります。
ディレクトリ内にファイルやフォルダが残っている場合は削除に失敗します。

ディレクトリの存在確認

ディレクトリの存在確認にはstat関数を使用します。
(stat関数に関してはファイルサイズの取得を参照)

#include <stdio.h>
#include <sys/stat.h>

int main()
{
    const char *dir = "C:\\ABC";
    struct stat statBuf;

    if (stat(dir, &statBuf) == 0)
        printf("ディレクトリ%sは存在します。\n", dir);
    else
        printf("ディレクトリ%sは存在しません。\n。", dir);

    getchar();
}

stat関数にはディレクトリも指定できます。
stat関数が成功すればディレクトリが存在するということになります。