使用 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()
方法,但是 BoxFolder
和 BoxItem
没有。
至于检查 ID 是否对应于文件或文件夹 - 如果不尝试发出 API 请求,则无法判断。例如,您可以尝试执行 new BoxFile(api, id).getInfo()
并查看它是否 returns 404。
有了存储在盒子上的项目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()
方法,但是 BoxFolder
和 BoxItem
没有。
至于检查 ID 是否对应于文件或文件夹 - 如果不尝试发出 API 请求,则无法判断。例如,您可以尝试执行 new BoxFile(api, id).getInfo()
并查看它是否 returns 404。