Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
src_corelib_io_qdirlisting.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
4#include <QDirListing>
5#include <QFile>
6#include <QFileInfo>
7
8using namespace Qt::StringLiterals;
9
10[[maybe_unused]] static void func() {
11 {
12 //! [0]
13 using ItFlag = QDirListing::IteratorFlag;
14 for (const auto &dirEntry : QDirListing(u"/etc"_s, ItFlag::Recursive)) {
15 qDebug() << dirEntry.filePath();
16 // /etc/.
17 // /etc/..
18 // /etc/X11
19 // /etc/X11/fs
20 // ...
21 }
22 //! [0]
23 }
24
25 {
26 //! [1]
27 using F = QDirListing::IteratorFlag;
28 QDirListing dirList(u"/sys"_s, QStringList{u"scaling_cur_freq"_s}, F::FilesOnly | F::Recursive);
29 for (const auto &dirEntry : dirList) {
30 QFile f(dirEntry.filePath());
31 if (f.open(QIODevice::ReadOnly))
32 qDebug() << f.fileName() << f.readAll().trimmed().toDouble() / 1000 << "MHz";
33 }
34 //! [1]
35 }
36
37 {
38 //! [2]
39 QDirListing audioFileIt(u"/home/johndoe/"_s, QStringList{u"*.mp3"_s, u"*.wav"_s},
40 QDirListing::IteratorFlag::FilesOnly);
41 //! [2]
42 }
43
44 {
45 //! [3]
46 using ItFlag = QDirListing::IteratorFlag;
47 for (const auto &dirEntry : QDirListing(u"/etc"_s, ItFlag::Recursive)) {
48 // Faster
49 if (dirEntry.fileName().endsWith(u".conf")) { /* ... */ }
50
51 // This works, but might be potentially slower, since it has to construct a
52 // QFileInfo, whereas (depending on the implementation) the fileName could
53 // be known already
54 if (dirEntry.fileInfo().fileName().endsWith(u".conf")) { /* ... */ }
55 }
56 //! [3]
57 }
58
59 {
60 //! [4]
61 using ItFlag = QDirListing::IteratorFlag;
62 for (const auto &dirEntry : QDirListing(u"/etc"_s, ItFlag::Recursive)) {
63 // Both approaches are the same, because DirEntry will have to construct
64 // a QFileInfo to get this info (for example, by calling system stat())
65
66 if (dirEntry.size() >= 4'000 /* 4KB */) { /* ...*/ }
67 if (dirEntry.fileInfo().size() >= 4'000 /* 4KB */) { /* ... */ }
68 }
69 //! [4]
70 }
71
72 {
73 //! [5]
74 using F = QDirListing::IteratorFlag;
75 const auto flags = F::FilesOnly | F::Recursive;
76 for (const auto &dirEntry : QDirListing(u"/etc"_s, flags)) {
77 // ...
78 }
79 //! [5]
80 }
81
82 {
83 //! [6]
84 using F = QDirListing::IteratorFlag;
85 const auto flags = F::FilesOnly | F::Recursive | F::ResolveSymlinks;
86 for (const auto &dirEntry : QDirListing(u"/etc"_s, flags)) {
87 // ...
88 }
89 //! [6]
90 }
91
92 {
93 //! [7]
94 using F = QDirListing::IteratorFlag;
95 const auto flags = F::FilesOnly | F::Recursive | F::ResolveSymlinks;
96 for (const auto &dirEntry : QDirListing(u"/usr"_s, flags)) {
97 // Faster than using name filters, filter ".txt" and ".html" files
98 // using QString API
99 const QString fileName = dirEntry.fileName();
100 if (fileName.endsWith(".txt"_L1) || fileName.endsWith(".html"_L1)) {
101 // ...
102 }
103 }
104 }
105 //! [7]
106}
static void func()