QList<QUrl> NetworkCache::getEntries() const { QList<QUrl> entries; const QDir cacheMainDirectory(cacheDirectory()); const QStringList directories(cacheMainDirectory.entryList(QDir::AllDirs | QDir::NoDotAndDotDot)); for (int i = 0; i < directories.count(); ++i) { const QDir cacheSubDirectory(cacheMainDirectory.absoluteFilePath(directories.at(i))); const QStringList subDirectories(cacheSubDirectory.entryList(QDir::AllDirs | QDir::NoDotAndDotDot)); for (int j = 0; j < subDirectories.count(); ++j) { const QDir cacheFilesDirectory(cacheSubDirectory.absoluteFilePath(subDirectories.at(j))); const QStringList files(cacheFilesDirectory.entryList(QDir::Files)); for (int k = 0; k < files.count(); ++k) { const QNetworkCacheMetaData metaData(fileMetaData(cacheFilesDirectory.absoluteFilePath(files.at(k)))); if (metaData.url().isValid()) { entries.append(metaData.url()); } } } } return entries; }
/*! \reimp */ QNetworkCacheMetaData QNetworkDiskCache::metaData(const QUrl &url) { #if defined(QNETWORKDISKCACHE_DEBUG) qDebug() << "QNetworkDiskCache::metaData()" << url; #endif Q_D(QNetworkDiskCache); if (d->lastItem.metaData.url() == url) return d->lastItem.metaData; return fileMetaData(d->cacheFileName(url)); }
void NetworkCache::clearCache(int period) { if (period <= 0) { clear(); emit cleared(); return; } const QDir cacheMainDirectory(cacheDirectory()); const QStringList directories(cacheMainDirectory.entryList(QDir::AllDirs | QDir::NoDotAndDotDot)); for (int i = 0; i < directories.count(); ++i) { const QDir cacheSubDirectory(cacheMainDirectory.absoluteFilePath(directories.at(i))); const QStringList subDirectories(cacheSubDirectory.entryList(QDir::AllDirs | QDir::NoDotAndDotDot)); for (int j = 0; j < subDirectories.count(); ++j) { const QDir cacheFilesDirectory(cacheSubDirectory.absoluteFilePath(subDirectories.at(j))); const QStringList files(cacheFilesDirectory.entryList(QDir::Files)); for (int k = 0; k < files.count(); ++k) { const QNetworkCacheMetaData metaData(fileMetaData(cacheFilesDirectory.absoluteFilePath(files.at(k)))); if (metaData.isValid() && metaData.lastModified().isValid() && metaData.lastModified().secsTo(QDateTime::currentDateTime()) > (period * 3600)) { remove(metaData.url()); } } } } }
QNetworkCacheMetaData _fileMetaData(const QString &fileName) { return fileMetaData(fileName); }