我有一個鏈接到文件和一個實際的文件。我如何檢測它們是否指向相同的物理位置?如何檢測兩個文件條目是否與Qt引用相同的物理文件系統?
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
bool isSameFileSystem(QString path1, QString path2)
{
struct stat stat1, stat2;
QFileInfo fi1(path1);
QFileInfo fi2(path2);
stat(fi1.absoluteDir().absolutePath().toUtf8().constData(), &stat1);
stat(fi2.absoluteDir().absolutePath().toUtf8().constData(), &stat2);
return stat1.st_dev == stat2.st_dev;
}
不過,重複的代碼可以移動到一個單獨的函數。 – vahancho
我不認爲這是一個可靠的解決方案。在'isSymLink'的文檔中,沒有明確提到真正的符號NTFS鏈接。即使象徵性的NTFS鏈接被處理了硬鏈接或連接(掛載的目錄)呢? – bkausbk
那麼,根據http://doc.qt.io/qt-5/qfileinfo.html#isSymLink它讀取Windows上的.lnk文件。 – AlexanderVX