カンテラの光の下で

dNaga392's memorandom

【Qt】ディレクトリ内のファイルをすべて削除する

H261117 フィルタを追加(システムリンク".",".."を拾っていたため)。

ディレクトリ内のファイルをすべて消すときは、
QDirですべてのファイル情報を取得して、QFile::remove()を使いましょう。

作業用ディレクトリ内の一時ファイルやログを消すときに有効です。

// QString targetDir : 対象ディレクトリのパス
QDir dir = QDir(targetDir);

// すべてのファイル(*.*)が対象
QStringList filters;
filters << "*.*";
dir.setNameFilters(filters);
// フィルタは、[QDir::Files => ファイルのみ],[QDir::NoSymLinks => リンクではない]
dir.setFilter(QDir::Files | QDir::NoSymLinks);
// 該当ファイル情報を取得
QFileInfoList infolist = dir.entryInfoList();

// あとはひたすら削除する
foreach(QFileInfo fileInfo, infolist)
{
    if(QFile::remove(fileInfo.filePath()))
    {
        qDebug("%s %d: QFile::remove(path = %s)",__FILE__,__LINE__, fileInfo.filePath());
    }
    else
    {
        qDebug("%s %d: Error:QFile::remove(path = %s)",__FILE__,__LINE__, fileInfo.filePath());
    }
}