这是我的 S3 支持的 Java 用例 File
File videoFile = new File(OUTPUT_FOLDER + "channel" + channel + "-" + System.currentTimeMillis() + ".mp4");
AWTSequenceEncoder encoder = AWTSequenceEncoder.createSequenceEncoder(videoFile, Long.valueOf(FPS).intValue());
for (BufferedImage image : bufferedImages) {
encoder.encodeImage(image);
}
以上只是一个用例,我想知道是否存在 S3 支持的 File
可以用作 java.io.File
的管理单元替代品;在上面的示例代码中,想法是替换 videoFile
它将直接保存到 S3 或 S3 兼容存储,而不是保存到磁盘。
哪个是通过编译时或运行时注入(inject)的最佳位置?
最佳答案
据我所知,不存在这样的事情。
您能做的最好的事情就是在操作系统级别实现 S3 支持的文件系统。 (例如,使用 s3backer
linux man page )如果文件系统具有正确的属性,则使用 java.io.File
的应用程序将不会知道其中的差异。
或者,使用自定义 Java 7+ FileSystem
javadoc ,但您必须更改代码才能停止使用 File
并开始使用更现代的 API。
(当然,如果您愿意在 native 代码级别深入研究并修改 JVM,那么一切皆有可能。但是这样您就会引入一大堆其他问题。)
<小时/>And which is the best place to inject it, through compile-time or run-time?
这不是一个可行的选择。 java.io.File
的重要部分是在 JVM 中以 native 代码实现的,并且不可“可插入”或“可注入(inject)”。
关于java - S3 支持的 java.io.File,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60517797/