使用 box java sdk 下载项目而不知道它是文件还是文件夹

Use box java sdk to download an item without knowing if it's a file or a folder

有了存储在盒子上的项目ID,如果是文件就可以下载它,如果是文件夹就可以下载它的内容。无论哪种方式,您似乎都需要知道您正在下载什么样的东西才能访问它,在处理实际下载之前执行 BoxFile file = new BoxFile(api, id);BoxFolder folder = new BoxFolder(api, id);

我希望能够做类似

的事情
BoxItem boxItem = new BoxItem(api, id);
if (boxItem instanceof BoxFile) {
    // download file
} else if (boxItem instanceof BoxFolder) {
    // download all files in folder
}

有点像 the example in the docs of downloading a folder's contents。但是,在那种情况下,ID 是特定文件夹的 ID,而我的 ID 是根文件夹中的文件夹或文件,我不想遍历根文件夹的所有内容。而且,无论如何,BoxItem无法实例化。

如何仅通过项目 ID 提前判断我下载的是文件还是文件夹?如果没有,有没有办法下载该项目?

我认为 API 不支持下载整个文件夹(因此 SDK 也不支持)。最接近的是下载该文件夹的所有文件。这就是为什么 BoxFile 有一个 download() 方法,但是 BoxFolderBoxItem 没有。

至于检查 ID 是否对应于文件或文件夹 - 如果不尝试发出 API 请求,则无法判断。例如,您可以尝试执行 new BoxFile(api, id).getInfo() 并查看它是否 returns 404。