How to get absolute path of a document and file from Google Drive Using Java Drive Rest V2 API?

前端 未结 2 1332
隐瞒了意图╮
隐瞒了意图╮ 2020-12-10 00:23

I\'m working on Google Drive Integration using Java Drive Rest V2 API, I\'m able to get most of the document/file metadata properties excep

2条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-10 01:03

    Sharing my solution which will be helpful to others :)...

    After several google searches and from Google Drive Documentation for Java Drive Rest V2 API, I got to know that there is no method to call/get the full file path.

    So I created following two custom method to achieve my question solution:

    1. "getFilePath(drive, file)" with String return type.
    2. "getfoldersList(drive, parentReferencesList, folderList)" with List of String return type.

    Below is the Code Snippet

    public static void main(String[] args) throws IOException {
        // Build a new authorized API client service.
        Drive service = getDriveService();
        try {
            // Print the file path and name.
            FileList result = service.files().list().execute();
            List files = result.getItems();
    
            if (files == null || files.size() == 0) {
                System.out.println("No files found.");
            } else {
                System.out.println("Files:");
    
                for (File file : files) {
                    if (!(file.getMimeType().contains("folder"))) {
                        String filePath = null;
    
                        if (!(file.getParents().isEmpty())) {
                            filePath = getFilePath(service, file);
                        }
    
                        System.out.println("path: " + filePath);
                        System.out.println("name: " + file.getTitle());
                        System.out.println();
                    }
                }
                System.out.println("== END ==");
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
    
    private static String getFilePath(Drive drive, File file) throws IOException {
        String folderPath = "";
        String fullFilePath = null;
    
        List parentReferencesList = file.getParents();
        List folderList = new ArrayList();
    
        List finalFolderList = getfoldersList(drive, parentReferencesList, folderList);
        Collections.reverse(finalFolderList);
    
        for (String folder : finalFolderList) {
            folderPath += "/" + folder;
        }
    
        fullFilePath = folderPath + "/" + file.getTitle();
    
        return fullFilePath;
    }
    
    private static List getfoldersList(Drive drive, List parentReferencesList, List folderList) throws IOException {
        for (int i = 0; i < parentReferencesList.size(); i++) {
            String id = parentReferencesList.get(i).getId();
    
            File file = drive.files().get(id).execute();
            folderList.add(file.getTitle());
    
            if (!(file.getParents().isEmpty())) {
                List parentReferenceslist2 = file.getParents();
                getfoldersList(drive, parentReferenceslist2, folderList);
            }
        }
        return folderList;
    }
    

    --

    Thanks,

    Arpit Bora

提交回复
热议问题