我使用Drive Android API在设备之间同步文件并在云端硬盘上保留最新版本。从一段时间以来,它开始表现得非常奇怪。
要查看文件是否存在并获取最新版本,我会按该文件名进行查询搜索,并按修改日期降序排序。它在文件更新时返回正确的日期时间:
final SortOrder sortOrder = new SortOrder.Builder()
.addSortDescending(SortableField.MODIFIED_DATE)
.build();
final Query query = new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE, "fileName"))
.addFilter(Filters.eq(SearchableField.TRASHED, false))
.setSortOrder(sortOrder)
.build();
Drive.DriveApi.query(apiClient, query)
.setResultCallback(lastModifiedCallback);
但是当我查询文件内容时,它会返回一些旧版本的内容。我无法理解是什么导致它。
我按如下方式阅读文件:
driveId.asDriveFile()
.open(apiClient, DriveFile.MODE_READ_ONLY, null)
.setResultCallback(fileContentsCallback);
我读到的驱动器内容如下:
final DriveContents driveContents = result.getDriveContents();
final InputStream inputStream = driveContents.getInputStream();
final File newFile = new File("fileName");
final FileOutputStream dest = new FileOutputStream(newFile);
ByteStreams.copy(inputStream, dest);
driveContents.commit(apiClient, null);
任何想法为什么会发生以及如何解决?
我知道返回的版本是旧版本,因为如果我在设备上使用Drive应用程序,它会返回相同文件的正确最新版本。