1

루트 디렉토리에서만 파일을 다운로드하려고합니다. 현재 루트가 아닌 다른 폴더에있는 가장 최근의 파일을 다운로드하는 방법을 모르기 때문에 현재 폴더를 지정하고 있지 않습니다. 내가 원한다면 루트에있는 파일 만 있으면됩니다. 파일과 다운로드 URL을 받고있다 코드는 다음과 같습니다 :Google 드라이브 복구 API, 루트 폴더에서만 파일 다운로드

public static void startDownload() throws IOException, ParseException { 

    Drive serv = getDriveService(); 

    FileList result = serv.files().list().setMaxResults(10).execute(); //there are 10 files in the root folder  

    List<File> listA = result.getItems(); 

    if (listA == null || listA.isEmpty()) { 
     System.out.println("No files found."); 
    } else { 
     System.out.println("Files:"+lista.size()); 
     for (File file : listA) { 
      System.out.printf("%s (%s)\n", file.getTitle(), file.getDownloadUrl()); 
      downloadFile(serv, file); 
     } 
    } 
} 

난 단지가 아닌 다른 폴더에 루트 파일에있는 모든 파일을 다운로드하고 싶습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

고려 사항이 될 것입니다.

당신의 라인 3 필요

문자열 Q = "휴지통 = 거짓과 부모와 mimeType를! = '응용 프로그램/vnd.google-apps.folder'에서 '루트'"

파일리스트가 될 setQ (q) .setMaxResults (10) .execute(); 결과는 serv.files(). 이 10 개 개의 결과의 최대 값을 반환하지만 더욱 그렇고, 당신이 결과의 최소 수는 없다는 것을 인식 할 필요가 있음을

당신은 알고 있어야합니다. 즉, 11 개의 파일이있는 경우 은 첫 번째 반복에서 10을 얻고 두 번째에서 1을 얻을 수 있습니다. 그러나 1과 10 또는 3과 6과 2 또는 0과 0과 1과 10을 얻을 수도 있습니다. 값을 getNextPageToken() == null까지 계속 가져와야합니다. 그래서 라인

경우 (중고 장비 구매 == null의 || listA.isEmpty()) {

해야

경우 (result.getNextPageToken() 같은 == 널 (null)) {

공식 문서에서 복사/붙여 넣기했음을 알고 있지만 슬프게도 설명서가 잘못되었습니다.

2

당신은 파일 결과를 필터링

Q 문자열을 쿼리를 검색 할 Q 매개 변수를 사용해야합니다. 지원되는 구문은 " 파일 검색"가이드를 참조하십시오.

다음과 같이 보내는 것은 루트 부모가있는 폴더가 아닌 모든 것을 반환합니다.

mimeType를! = '응용 프로그램/vnd.google-apps.folder'부모의 '루트'