Added emptyDirectory()
This commit is contained in:
@@ -7,12 +7,14 @@ set(HEADERS
|
||||
dbcorelib_global.h
|
||||
fixedsizematrix.h
|
||||
randomdevice.h
|
||||
utils/fileutils.h
|
||||
utils/jsonutils.h
|
||||
utils/timeutils.h
|
||||
)
|
||||
|
||||
set(SOURCES
|
||||
randomdevice.cpp
|
||||
utils/fileutils.cpp
|
||||
utils/jsonutils.cpp
|
||||
utils/timeutils.cpp
|
||||
)
|
||||
@@ -25,6 +27,8 @@ target_link_libraries(dbcorelib Qt5::Core)
|
||||
|
||||
target_include_directories(dbcorelib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
add_dependencies(libs dbcorelib)
|
||||
|
||||
|
||||
add_executable(tst_fixedsizematrix tst_fixedsizematrix.cpp)
|
||||
add_test(tst_fixedsizematrix tst_fixedsizematrix)
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
#include "fileutils.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QDebug>
|
||||
#include <QDirIterator>
|
||||
#include <QFileInfo>
|
||||
#include <QFile>
|
||||
|
||||
bool emptyDirectory(const QString &path)
|
||||
{
|
||||
QDir dir(path);
|
||||
|
||||
if(!dir.exists())
|
||||
{
|
||||
qWarning() << "tried to empty non-existant dir" << path;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool success = true;
|
||||
// not empty -- we must empty it first
|
||||
QDirIterator di(dir.absolutePath(), QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
|
||||
while (di.hasNext()) {
|
||||
di.next();
|
||||
const QFileInfo& fi = di.fileInfo();
|
||||
const QString &filePath = di.filePath();
|
||||
bool ok;
|
||||
if (fi.isDir() && !fi.isSymLink()) {
|
||||
ok = QDir(filePath).removeRecursively(); // recursive
|
||||
} else {
|
||||
ok = QFile::remove(filePath);
|
||||
if (!ok) { // Read-only files prevent directory deletion on Windows, retry with Write permission.
|
||||
const QFile::Permissions permissions = QFile::permissions(filePath);
|
||||
if (!(permissions & QFile::WriteUser))
|
||||
ok = QFile::setPermissions(filePath, permissions | QFile::WriteUser)
|
||||
&& QFile::remove(filePath);
|
||||
}
|
||||
}
|
||||
if (!ok)
|
||||
success = false;
|
||||
}
|
||||
|
||||
if(!success)
|
||||
qWarning() << "could not empty" << path;
|
||||
|
||||
return success;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include "dbcorelib_global.h"
|
||||
|
||||
bool DBCORELIB_EXPORT emptyDirectory(const QString &path);
|
||||
Reference in New Issue
Block a user