Проверить, существует ли каталог в файловой системе google-nativeclient?
Я пытаюсь проверить, существует ли каталог в файловой системе Native Client, но не могу найти никаких функций для этого. Я пытался создать PPB_FileRef
для каталога, а затем открыть, используя PPB_FileIO::Open
а потом звонит PPB_FileIO::Query
но PPB_FileIO::Open
возвращается PP_ERROR_NOTAFILE
и тогда второй вызов не удается.
Это код, который я пытался, некоторые из инициализации опущены для краткости.
PP_Instance instance; // initialised elsewhere
PPB_FileRef *fileRefInterface; // initialised elsewhere
PPB_FileIO *fileIOInterface; // initialised elsewhere
PP_Resource fileSystemResource; // initialised elsewhere
PP_Resource fileRefResource = fileRefInterface->Create(
fileSystemResource,
"/directory");
PP_Resource fileIOResource = fileIOInterface->Create(instance);
// This call is returning PP_ERROR_NOTAFILE
//
int32_t result = fileIOInterface->Open(
fileIOResource,
fileRefResource,
PP_FILEOPENFLAG_READ,
PP_BlockUntilComplete()); // this is being called from a background thread.
if (result != PP_OK)
{
return false;
}
PP_FileInfo info;
result = fileIOInterface->Query(fileIOResource, &info, PP_BlockUntilComplete());
if (result != PP_OK)
{
return info.type == PP_FILETYPE_DIRECTORY;
}
return false;
Возвращаемое значение PP_ERROR_NOTAFILE
от PPB_FileIO::Open
для действительного PPB_FileRef
Достаточно ли мне сказать, что это каталог или есть другой лучший метод, который я должен использовать?
Спасибо Джеймс
1 ответ
Да, в настоящее время способ определить, является ли PPB_FileRef
относится к каталогу, чтобы попытаться открыть его и искать PP_ERROR_NOTAFILE
возвращаемое значение
Для фона PP_ERROR_NOTAFILE
был добавлен после ветки для pepper_25
было сделано, так что пока pepper_26
становится доступным в SDK, нужно разрабатывать с pepper_canary
чтобы получить его определение в pp_errors.h
, Для получения дополнительной информации см. Соответствующий список изменений Chrome, в котором конкретно указано, что это возвращаемое значение используется при попытке открыть каталог.
Текущее поведение, возможно, немного непрозрачно. Есть интерфейс "dev" (экспериментальный / незаконченный) PPB_DirectoryReader
это после выпуска обеспечит более прямой способ работы с каталогами.