Проверить, существует ли каталог в файловой системе 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 это после выпуска обеспечит более прямой способ работы с каталогами.

Другие вопросы по тегам