在java Web服务器上生成文件

时间:2012-07-21 03:44:42

标签: java web-applications

我有一个Web服务,它在服务器上生成一堆文件(比如tomcat),它们被压缩并通过servlet的OutputStream流回客户端。

这部分很清楚。我正在努力解决的部分是如何管理这些文件,以便在两个客户端碰巧同时使用此功能时。

我可以想到几个可能的解决方案,我不确定处理这个问题的最简单和最好的方法是什么,并且很想听到一些想法。

例如:我可以创建一个目录名称附加时间戳的目录,例如:在我将zip文件写入流后,tmp_123142345并删除此文件夹。两个人不太可能尝试在同一毫秒内下载同一个文件。

但是,有更好的方法吗?

4 个答案:

答案 0 :(得分:0)

这不太可能,但并非不可能。你可能想要一个你可以在董事会会议上夸耀它没有碰撞的解决方案。 :)

拥有全局同步计数器或更好的AtomicLong计数器。创建目录名称,如"tmp_"+ (atomicLongCounter.addAndGet(1))

因此,即使它们以相同的毫秒落地,每个目录都会有唯一的目录。

答案 1 :(得分:0)

我认为你的解决方案没问题,但你真的不需要删除这些文件。您可以在任务管理器中编写一个任务,负责每天删除所有这些文件(只需清理目录)。看看here,有一些解决方案可以使de目录清理。

答案 2 :(得分:0)

为什么不使用java.util.UUID?它将使您获得可以附加到文件名的唯一ID。

答案 3 :(得分:0)

您可以使用File类中的createTempFile方法。这将让Java为您创建一个独特的文件夹,您可以放置​​文件...