Запрос списка файлов и папок в корневом каталоге

Я хотел бы получить список файлов и папок в корневом каталоге без необходимости перебирать все файлы. Есть ли запрос, который бы сделал это?

4 ответа

Решение

Корневая папка также может быть адресована специальным псевдонимом "root", так что вы можете получить все файлы и папки в корне с помощью следующего запроса:

https://www.googleapis.com/drive/v2/files?q='root' in parents

Не забудьте экранировать URL, если не используете одну из клиентских библиотек (они автоматически позаботятся об этом).

Подробнее о языке поисковых запросов читайте на https://developers.google.com/drive/search-parameters

Этот код будет отображать все файлы и папки вашего корневого каталога. просто скопируйте и вставьте этот код, и вы получите все файлы и папки вашего корня.

 List<File> result = new ArrayList<File>();
    Files.List request = null;

    try {
          request = mService.files().list();
          FileList files = request.setQ("'root' in parents and trashed=false").execute();
          result.addAll(files.getItems());          
          request.setPageToken(files.getNextPageToken());
        } 
      catch (IOException e)
      {
        System.out.println("An error occurred: " + e);
        request.setPageToken(null);
      }

 //Print out all the files and folder of root Directory  
  for(File f:result)
  {
      System.out.println("recvd data are: "+f.getTitle());
  }

Google drive v3 Справочная документация помогает создать объект DriveClient.

Запустите этот метод ниже в фоновом потоке (Android).

Примечание. Требуется разрешение для области "DriveScopes.DRIVE"

 protected String[] getListChildren(String parentId) throws Exception {
    String[] children = null;
   parentId = parentId == null ? "root" : parentId;
    String fileQuery = "'" + parentId + "' in parents and trashed=false";
    FileList files = driveService.files().list().setQ(fileQuery).execute();
    List<String> fileNames = new ArrayList<String>();
    for (File file : files.getFiles()) {
        fileNames.add(file.getName());
    }
    children = fileNames.toArray(new String[0]);
    return children;
}

Запрос на общий диск должен быть "'driveId' in parents.

С использованием 'root'работает только с My Drive .

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