3

次の構造のディレクトリを取得しました。

Name-
   -Year1
      -Month1
        -Day1
          -file1
        -..
      -...
   -Year2
      -Month1
      -...
   -...

今私は2つの日付2009-01-02と2010-02-03を持っています。

巨大なif-else構造を構築せずに、指定された時間にフォルダー内にあるすべてのファイルを一覧表示する方法を誰かが知っているかどうかを尋ねたいと思います。可能であれば、Qt以外のフレームワークなしで。

どんな助けでも大歓迎です!

4

3 に答える 3

8

QDir :: entryList()を見てください。これにより、フォルダー内のすべてのファイルが一覧表示されます。次のようにディレクトリパスを作成できます。

QString path = QDir::currentPath() + "/" +
               QString::fromNumber(year) + "/" +
               QString::fromNumber(month) + "/" +
               QString::fromNumber(day);

そしてします

QDir dir(path);
QStringList files = dir.entryList();

他の日付についても同じことを行ってから、2つのQStringListを組み合わせることができます。

于 2012-10-15T14:01:29.800 に答える
2

次のように、ディレクトリツリーをスキャンするイテレータを作成できます。

QDir dir("YOUR_PATH_BASE"); //"Name"
if (dir.exists())
{
    foreach(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::AllDirs ))
    {
        if (info.isFile())
        {
            //do something
        }
        if (info.isDir())
        {
            //scan again
        }
    }
}
于 2012-10-15T15:24:27.223 に答える
1

これを行うには、 QDirクラスを使用できます。そこで、すべてのサブフォルダーを再帰的に繰り返すことができます。これを行うには、entryInfoListメソッドを使用できます。ディレクトリ内のすべてのファイルとディレクトリのQFileInfoオブジェクトのリストを返します。このリストのすべてのエントリについて、それがディレクトリであるかファイルであるかを確認できます。それがディレクトリの場合は、さらに深く掘り下げる必要があります。

これが何らかの形でお役に立てば幸いです。

于 2012-10-15T14:01:40.133 に答える