Как я узнаю, указывает ли путь фактический файл? - PullRequest
0 голосов
/ 17 апреля 2011

У меня есть функция следующим образом:

DWORD stats = GetFileAttributesA(path);
return (stats != INVALID_FILE_ATTRIBUTES) && !(stats & FILE_ATTRIBUTE_DIRECTORY) ? 1 : 0;

Проблема в том, что строка подключения SQL: «Драйвер = {Собственный клиент SQL Server 10.0}; сервер = localhost; база данных = NorthWindDB; Trusted_Connection = yes;» как-то действует. Возвращает 32 (статистика равна 32, если задан этот вход), что является значением FILE_ATTRIBUTE_ARCHIVE. Я не могу отфильтровать это, потому что другие законные файлы также возвращают это значение.

Как определить, указывает ли значение файл или строку подключения?

ОБНОВЛЕНИЕ: PathFileExists не работает либо

Ответы [ 5 ]

1 голос
/ 17 апреля 2011

Этот код:

#include <windows.h>
#include <iostream>
using namespace std;

int main() {

    DWORD stats = GetFileAttributesA( "Driver={SQL Server Native Client 10.0};server=localhost;database=NorthWindDB;Trusted_Connection=yes;" );
    cout << stats << endl;
}

печатает 4294967295 - это INVALID_FILE_ATTRIBUTES. Что это делает в вашей системе?

1 голос
/ 17 апреля 2011

Поскольку все остальное кажется неудачным, здесь используется совершенно другой подход: попробуйте system("dir \"path_to_check\"") и проверьте его возвращаемое значение (работает на моем компьютере :) См. Также system () .

1 голос
/ 17 апреля 2011

Много общего с как мне проверить путь к файлу или папке? , где они также упоминают BOOST Файловая система , но у меня нет опыта с этим ...

1 голос
/ 17 апреля 2011

Как насчет FindFirstFile или FindFirstFileEx ?

Поиск в каталоге файла или подкаталог с именем, которое соответствует конкретное имя (или частичное имя, если используются подстановочные знаки).

и

Если функция не работает или не работает найти файлы из строки поиска в параметр lpFileName, возвращаемый значение равно INVALID_HANDLE_VALUE.

Я думаю, что это можно использовать, чтобы определить, представляет ли данная строка настоящий файл или нет.

0 голосов
/ 17 апреля 2011

Возможно, такие функции, как GetFullPathName , могут помочь вам различать файлы и строки подключения?(еще не проверено)

Также SHLWAPI предоставляет набор функций пути, которые можно использовать для канонизации пути или проверки того, что путь кажется действительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...