Java 如何确定 Azure 文件存储上的文件是否完整?
How to determine if a file is complete on Azure File Storage in Java?
对于我们的项目,我们使用 Azure 文件存储,其中可以上传大文件(最多 500 MB)并且必须由 Java 微服务(基于 Spring 引导)处理,通过使用 Java 的 Azure SDK,定期轮询目录以查看是否已上传新文件。
是否可以通过某些方式确定上传文件何时完全上传,而无需像监控大小这样明显的解决方案?
遗憾的是,无法直接监控文件上传何时完成(包括监控大小)。这是因为文件上传分两个阶段进行:
- 首先,创建一个一定大小的空文件。这映射到
Create File
REST API 操作。
- 接下来,将内容写入该文件。这映射到
Put Range
REST API 操作。这是实际数据写入文件的地方。
假设数据按顺序写入文件(即从字节 0 到文件大小),一种可能性是继续检查文件的最后 "n" 字节数,看看是否所有它们是非零字节。这将表明一些数据已写入文件末尾。同样,这不是万无一失的解决方案,因为可能存在最后 "n" 个字节真正为零的情况。
对于我们的项目,我们使用 Azure 文件存储,其中可以上传大文件(最多 500 MB)并且必须由 Java 微服务(基于 Spring 引导)处理,通过使用 Java 的 Azure SDK,定期轮询目录以查看是否已上传新文件。 是否可以通过某些方式确定上传文件何时完全上传,而无需像监控大小这样明显的解决方案?
遗憾的是,无法直接监控文件上传何时完成(包括监控大小)。这是因为文件上传分两个阶段进行:
- 首先,创建一个一定大小的空文件。这映射到
Create File
REST API 操作。 - 接下来,将内容写入该文件。这映射到
Put Range
REST API 操作。这是实际数据写入文件的地方。
假设数据按顺序写入文件(即从字节 0 到文件大小),一种可能性是继续检查文件的最后 "n" 字节数,看看是否所有它们是非零字节。这将表明一些数据已写入文件末尾。同样,这不是万无一失的解决方案,因为可能存在最后 "n" 个字节真正为零的情况。