У меня есть код для перечисления файлов в каталоге.Для систем Windows я надеюсь получить список файлов и папок, который соответствует тому, что вы увидите в проводнике Windows.Например, когда я перечисляю C: \ на Server 2016, я хочу иметь папку Users
, но не соединение Documents and Settings
.В настоящее время я получаю и то и другое, без видимого способа их различения.
Мой текущий код выглядит так:
boost::filesystem::directory_iterator itr(dir);
boost::filesystem::directory_iterator end;
Poco::SharedPtr<Poco::JSON::Array> fileList(new Poco::JSON::Array);
for (; itr != end; ++itr) {
boost::filesystem::path entryPath = itr->path();
Poco::File file(entryPath.string());
// ...
Я пробовал метод Poco isLink()
, но он возвращаетложно для переходов.
Я также попробовал Poco::DirectoryIterator
, который дает то же поведение, что и Boost, и Poco::SortedDirectoryIterator
, который всегда выдает File access error: sharing violation: \pagefile.sys
при чтении C:\
.
В идеале этот код должен включатьсимволические ссылки в системах Linux и MacOS, игнорируя при этом соединения в Windows.