温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - How to download certain file using Dropbox API V2?
android java download dropbox dropbox-api

java - 如何使用Dropbox API V2下载某些文件?

发布于 2020-03-30 21:41:44

我需要使用从Dropbox下载某些文件/文件夹DbxClientV2我知道此文件的路径,并且它将始终是相同的,所以我不想让用户选择它。我见过:

public void onFileClicked(final FileMetadata file) { }

但这似乎不是我想要的,而且我也不知道如何FileMetadata使用文件路径创建对象。
我找不到任何有帮助的东西。GitHub获得了示例类但仍然需要FileMetadata

查看更多

提问者
SkypeDogg
被浏览
14
SkypeDogg 2020-01-31 20:57

好的,我花了一些时间,所以我将答案发布给其他人。

当然,您必须指定要保存它的位置(但这很明显),然后创建OutputStream

String path = Environment.getExternalStorageDirectory().toString() + "/DCIM";
                File file = new File(path, "test.txt");

                FileOutputStream outputStream = null;
                try {
                    outputStream = new FileOutputStream(file);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }

之后,我们创建Metadata对象并对其进行初始化,然后使用进行下载metadata.getPathLower()

 try {
                    Metadata pathMetadata = client.files().getMetadata("/test.txt");
                    client.files().download(pathMetadata.getPathLower()).download(outputStream);
                    Log.e("METADATA", pathMetadata.toString());

                } catch (DbxException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

奇怪的是getPathLower()返回,"test.txt"但是当我们在raw download()方法内部键入它时,它返回

java.lang.IllegalArgumentException: String 'path' does not match pattern

"/test.txt"也不起作用)。

我花了很多时间才能使它起作用,所以我希望我的回答可以帮助某人节省时间。

编码愉快!