AWS是否有官方的java.nio.file实现?我找到了一个GoogleCloudStoragehere,并需要类似的AWS和Azure。
AWS
java.nio.file
GoogleCloudStorage
Azure
erhoui1w1#
您可以尝试使用Amazon AWS S3 FileSystem Provider JSR-203 for Java 7 (NIO2)
从Maven Central下载
<dependency> <groupId>com.upplication</groupId> <artifactId>s3fs</artifactId> <version>2.2.2</version> </dependency>
在META-INF/services/java.nio.file.spi.FileSystemProvider(如果还不存在,请创建)中添加一行如下所示:com.upplication.s3fs.S3FileSystemProvider.
使用此代码创建fileSystem并设置为具体端点。
FileSystems.newFileSystem("s3:///", new HashMap<String,Object>(), Thread.currentThread().getContextClassLoader());
如何在Apache MINA中使用
public FileSystemFactory createFileSystemFactory(String bucketName) throws IOException, URISyntaxException { FileSystem fileSystem = FileSystems.newFileSystem(new URI("s3:///"), env, Thread.currentThread().getContextClassLoader()); String bucketPath = fileSystem.getPath("/" + bucketName); return new VirtualFileSystemFactory(bucketPath); }
Spring如何使用
添加到classpath并配置:
@Configuration public class AwsConfig { @Value("${upplication.aws.accessKey}") private String accessKey; @Value("${upplication.aws.secretKey}") private String secretKey; @Bean public FileSystem s3FileSystem() throws IOException { Map<String, String> env = new HashMap<>(); env.put(com.upplication.s3fs.AmazonS3Factory.ACCESS_KEY, accessKey); env.put(com.upplication.s3fs.AmazonS3Factory.SECRET_KEY, secretKey); return FileSystems.newFileSystem(URI.create("s3:///"), env, Thread.currentThread().getContextClassLoader()); } }
注入任意Spring组件:
@Autowired private FileSystem s3FileSystem;
uz75evzq2#
使用异步预读缓冲的FileSystemProvider SPI的实现有from github和from Maven Central。此库支持读取和写入。您可以使用以下命令将其包含在Maven项目中:
FileSystemProvider
<dependency> <groupId>software.amazon.nio.s3</groupId> <artifactId>aws-java-nio-spi-for-s3</artifactId> <version>1.2.1</version> </dependency>
或者,您可以将JAR文件放在类路径上,JVM将把所有具有s3模式的URI路由到这个提供者。
s3
vs3odd8k3#
对于任何感兴趣的人来说,Upplication/Amazon-S3-FileSystem-NIO2在很久以前就被抛弃了。不再接受合并请求和修复。许多开发人员分叉它,并为自己的目的进行修复,然后这些分叉也死了。我们决定做一个新的衍生项目--不是作为一个分支,而是作为一个名为s3fs-nio的新项目,它基于Upplication/Amazon-S3-FileSystem-NIO2的master。你可以找到更多关于here的历史和推理。我们尝试从fork中收集一些更重要的修复,并将它们添加到我们的项目中(获得作者的许可)。我们的衍生产品使用AWS SDK for Java 2.x版本,并在Apache 2.0许可证下运行。配置文档可以在here中找到。代码示例位于here。我们现在已经为org.carlspring.cloud.aws:s3fs-nio:1.0.0削减了一个版本,可以通过Maven Central(https://repo.maven.apache.org/maven2/)获得。这是我们的Release Notes。我们也在努力改进我们的documentation和贡献将受到高度赞赏。我们欢迎您进行测试并报告任何发现!对于那些有兴趣做出贡献的人,还有很多事情要做,我们非常乐意让你加入!
master
org.carlspring.cloud.aws:s3fs-nio:1.0.0
下面是一个基本配置:
<dependency> <groupId>org.carlspring.cloud.aws</groupId> <artifactId>s3fs-nio</artifactId> <version>1.0.0</version> </dependency>
implementation 'org.carlspring.cloud.aws:s3fs-nio:1.0.0'
amazon.properties
src/main/resources/amazon.properties
s3fs.access.key=access-key s3fs.secret.key=secret-key
使用以下代码创建FileSystem并将其设置为特定端点:
FileSystems.newFileSystem(URI.create("s3:///"), new HashMap<>(), Thread.currentThread() .getContextClassLoader());
3条答案
按热度按时间erhoui1w1#
您可以尝试使用Amazon AWS S3 FileSystem Provider JSR-203 for Java 7 (NIO2)
从Maven Central下载
在META-INF/services/java.nio.file.spi.FileSystemProvider(如果还不存在,请创建)中添加一行如下所示:com.upplication.s3fs.S3FileSystemProvider.
使用此代码创建fileSystem并设置为具体端点。
如何在Apache MINA中使用
Spring如何使用
添加到classpath并配置:
注入任意Spring组件:
uz75evzq2#
使用异步预读缓冲的
FileSystemProvider
SPI的实现有from github和from Maven Central。此库支持读取和写入。您可以使用以下命令将其包含在Maven项目中:
或者,您可以将JAR文件放在类路径上,JVM将把所有具有
s3
模式的URI路由到这个提供者。vs3odd8k3#
常规
对于任何感兴趣的人来说,Upplication/Amazon-S3-FileSystem-NIO2在很久以前就被抛弃了。不再接受合并请求和修复。许多开发人员分叉它,并为自己的目的进行修复,然后这些分叉也死了。
我们决定做一个新的衍生项目--不是作为一个分支,而是作为一个名为s3fs-nio的新项目,它基于Upplication/Amazon-S3-FileSystem-NIO2的
master
。你可以找到更多关于here的历史和推理。我们尝试从fork中收集一些更重要的修复,并将它们添加到我们的项目中(获得作者的许可)。我们的衍生产品使用AWS SDK for Java 2.x版本,并在Apache 2.0许可证下运行。
配置文档可以在here中找到。
代码示例位于here。
我们现在已经为
org.carlspring.cloud.aws:s3fs-nio:1.0.0
削减了一个版本,可以通过Maven Central(https://repo.maven.apache.org/maven2/)获得。这是我们的Release Notes。我们也在努力改进我们的documentation和贡献将受到高度赞赏。
我们欢迎您进行测试并报告任何发现!
对于那些有兴趣做出贡献的人,还有很多事情要做,我们非常乐意让你加入!
基本示例
下面是一个基本配置:
amazon.properties
文件在src/main/resources/amazon.properties
中,添加以下设置:使用以下代码创建FileSystem并将其设置为特定端点: