如何在Google云端硬盘中的特定文件夹中保存文件夹

时间:2014-04-05 06:06:35

标签: android file-upload google-drive-api

我可以使用以下代码将文件保存/复制到Google云端硬盘的任何文件夹中 。但是,当我应用此方法将文件夹保存在任何其他文件夹中时,它无法保存文件夹,也没有任何反应。我想复制一个文件夹并将其保存在其他地方

  String LocationID="0B-WFTScd2afSFS34TC-223";//getting the id of the parent folder where we have to make the new file as its child
         File orgnlFile =global_file;
         File copiedFile = new File();

        copiedFile.setTitle(orgnlFile.getTitle());       
        copiedFile.setMimeType(orgnlFile.getMimeType());
        copiedFile.setParents(Arrays.asList(new ParentReference().setId(LocationID)));
       try 
        {
            mService.files().copy(orgnlFile.getId(), copiedFile).execute();

         } catch (IOException e) 
         {
            System.out.println("An error occurred: " + e);
         }

但不幸的是,它不适用于其他目录中的copy-paste文件夹

1 个答案:

答案 0 :(得分:1)

这是因为复制正在将文件的媒体内容复制到新文件中。由于文件夹没有媒体内容,因此无需复制。

当您说“我想复制文件夹”时,您的意思是(1)仅复制 文件夹,或者(2)复制文件夹和文件夹中的所有文件,然后执行此操作是指(3)复制还是简单地做出第二次参考?

根据您要实现的目标,您需要制作的Drive API调用不同。

或许解释你想要的最好的方法是用* nix命令“cp”,“mv”和“ln”来表达它

创建文件夹-a(位于文件夹-b下)及其子文件夹-c的副本(在* nix中,“cp -R / folder -b / folder-a / folder-c” )你需要: -

  1. 在新的父文件夹(folder-c)下创建一个新文件夹-a。注意,尽管folder-a与原始名称相同。这是一个不同的文件夹。
  2. 记下新文件夹的文件ID -a
  3. 获取原始文件夹-a(儿童Feed)
  4. 的子项列表
  5. 为每个孩子复制
  6. 将每个新文件的parents属性更新为新文件夹-a
  7. 如果文件夹-a中有文件夹,则需要以递归方式执行上述操作