需要Java库——远程(如S3)文件的本地文件缓存

需要Java库——远程(如S3)文件的本地文件缓存,java,caching,file-io,amazon-s3,Java,Caching,File Io,Amazon S3,我的应用程序需要在Java和文件系统之间建立一个层,以使文件系统只包含所有文件(存储在S3上)的子集这一事实变得透明。该层必须做很多普通文件IO所做的事情,即打开文件、锁定文件以进行读/写等,但在打开时,它可能需要下载文件并逐出关闭的文件。我需要的另一个特性是,如果文件被锁定用于读/写,打开调用可以解锁该文件并关闭现有流(即,将其他用户踢出)。另一个是临时文件的管理 有没有类似的东西是开源的,还是我必须卷起袖子?我应该从头开始,还是java IO中有一些钩子可以使用?我建议您检查一下,即使它不是

我的应用程序需要在Java和文件系统之间建立一个层,以使文件系统只包含所有文件(存储在S3上)的子集这一事实变得透明。该层必须做很多普通文件IO所做的事情,即打开文件、锁定文件以进行读/写等,但在打开时,它可能需要下载文件并逐出关闭的文件。我需要的另一个特性是,如果文件被锁定用于读/写,打开调用可以解锁该文件并关闭现有流(即,将其他用户踢出)。另一个是临时文件的管理

有没有类似的东西是开源的,还是我必须卷起袖子?我应该从头开始,还是java IO中有一些钩子可以使用?

我建议您检查一下,即使它不是您所需要的,您也可以从中找到有用的想法

也许在你的情况下值得考虑

网关缓存卷:您可以将主要数据存储在Amazon S3中,并在本地保留频繁访问的数据。网关缓存卷在主存储上节省了大量成本,最大限度地减少了扩展本地存储的需要,并保留了对频繁访问的数据的低延迟访问


本项目旨在简化为Java7NIO(Java7FS-base)创建自定义文件系统实现的过程。作者已经实现了Dropbox FS(java7 FS Dropbox),并开始了S3(java7-FS-amazon-S3)的工作

它是一个设备,而不是Java库。我最终实现了我自己的,经历了一系列痛苦,使它变得太复杂(文件锁定、强制窃取锁等),意识到该方法的元素是错误的,现在我推迟重写它。@AleksandrDubinsky我知道,但可能在购买与构建的情况下会有所帮助。几年过去了,你最后做了什么?@DavidNewcomb我写的。我有点后悔了。锁定在服务器之间不起作用,因为数据库中没有跟踪状态。但它工作正常。我们在生产中使用它。你需要它吗?我在找一些东西来缓存File.listFiles(),无意中发现了你的项目。这听起来很有趣,所以我只是想知道事情进展如何。