ファイル、ディレクトリ操作

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ynhrt

ファイル、ディレクトリ操作

#1

投稿記事 by ynhrt » 9年前

フォルダを削除するプログラムを作っています。空のフォルダを削除する関数はわかりました。しかし、空でないと削除できないので先に中のファイルを削除し、その後フォルダを削除するプログラムは作りました。
でも、フォルダの中にフォルダがあると削除できません。どのようにしたらいいでしょうか。

コード:

             char foldername = "aaa";
	char motodirectory[260];
	GetCurrentDirectory(_MAX_PATH,motodirectory);
	SetCurrentDirectory(foldername);
	HANDLE hFind;
    WIN32_FIND_DATA fd;

	hFind = FindFirstFile("?*",&fd);
do {
	DeleteFile(fd.cFileName);
	} while (FindNextFile(hFind,&fd));
FindClose(hFind);
SetCurrentDirectory(motodirectory);
RemoveDirectory(foldername);
 

アバター
Ciel
記事: 252
登録日時: 9年前

Re: ファイル、ディレクトリ操作

#2

投稿記事 by Ciel » 9年前

フォルダの中のフォルダを消してから削除すればいいのではないですか?
oui C'est la Vie♪

non
記事: 1097
登録日時: 9年前

Re: ファイル、ディレクトリ操作

#3

投稿記事 by non » 9年前

再帰呼び出し(リカーシブコール)を使うのかな。
昔作った時には、そうしたと思う。
non

アバター
へろりくしょん
記事: 92
登録日時: 9年前
住所: 福岡

Re: ファイル、ディレクトリ操作

#4

投稿記事 by へろりくしょん » 9年前

再帰的にフォルダをたぐって行くのが一般的かと。
こんな感じ。

コード:

deleteDirectory(const char *path)
{
    hFind = FindFirstFile(path, &fd);
    do {
        if(hFind がフォルダだったら){
            deleteDirectory(hFind のパス);
        }else{
            フォルダじゃないから普通に消す。
        }
    } while (FindNextFile(hFind,&fd));
    FindClose(hFind);

    RemoveDirectory(path);
}


閉鎖

“C言語何でも質問掲示板” へ戻る