2017-06-15 165 views
0

Android現在有一個全新的API,它與舊的API完全不同(這很有趣),但在互聯網上沒有任何實際的例子,所以我在他們的例子中只找到了一些代碼。下面是它:如何使用新的Dropbox API下載文件?

// Download the file. 
    try (OutputStream outputStream = new FileOutputStream (file)) { 

     mDbxClient.files() 
     .download (metadata.getPathLower(), metadata.getRev()) 
     .download (outputStream); 

    } 

我需要從遠程文件夾中下載文件到本地一個,所以我需要使用此路徑,例如:

.download ("Backups/backup.ab", "/storage/sdcard/Folder/backup.ab")

我已經試過了,但得到一個錯誤

拋出:IllegalArgumentException:字符串 '轉' 不匹配模式」

你知道嗎,它可以和metadata.getPathLower()metadata.getRev()方法使用?我瞭解到,metadata var從execute()的第一個argv中獲得,但是這個函數做了什麼?

非常感謝!

回答

0

Dropbox API v2 Java SDKdownload method需要這兩個參數:

  • String path
  • String rev

download method documentation那裏,首先是在Dropbox的,你要的文件的遠程路徑下載,第二個是你想要修改文件的標識符。第二個參數不是你要保存文件的本地路徑,因爲它看起來是你在代碼中提供的。相反,您使用您發佈的示例代碼的.download (outputStream);部分保存文件內容,例如也如this sample code所示。

另外,如文檔中所述,第二個參數已棄用,不應再使用。您只能使用the version of the download method that only takes the one parameter。使用它的代碼與樣本相同。

僅供參考,在示例中,metadata對象是FileMetadata的實例。您也可以在文檔中找到有關getPathLowergetRev方法的更多信息。

+0

好的,但路徑參數必須看起來如何?例如,我想下載'backup.ab'文件,該文件位於我的應用程序單個文件夾(Dropbox上的Apps/AppName)的'Backups'文件夾中。我正在使用分離的函數進行下載,而不是活動,所以我如何從字符串文件路徑獲取'FileMetadata'? – Acuna

+0

該文件路徑將是'/ backups/backup.ab'。您可以從[FileMetadata.getPathLower'](https://dropbox.github.io/dropbox-sdk-java/api-docs/v3.0.x/com/dropbox/core/v2/files/)獲取路徑FileMetadata.html#getPathLower--)。你可以得到['FileMetadata'](https://dropbox.github.io/dropbox-sdk-java/api-docs/v3.0.x/com/dropbox/core/v2/files/FileMetadata.html# getPathLower--)本身來自API中的各種位置,例如['listFolder'](https://dropbox.github.io/dropbox-sdk-java/api-docs/v3.0.x/com /dropbox/core/v2/files/DbxUserFilesRequests.html#listFolder-java.lang.String-)。 – Greg

+0

我也這麼認爲,但是文檔說它必須匹配模式'「(/(。| [\\ r \\ n])* | id:。*)|(rev:[0-9a-f] { 9,})|(ns:[0-9] +(/.*)?)「',所以我有'IllegalArgumentException:字符串'路徑'現在不匹配pattern''錯誤。 – Acuna

相關問題