0

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

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

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

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

但是,有没有更好的方法?

4

4 回答 4

0

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

于 2012-07-21T12:59:10.207 回答
0

这不太可能,但并非不可能。您可能需要一个可以在董事会会议上吹嘘它没有冲突的解决方案。:)

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

所以每个人都会有唯一的目录,即使他们在同一毫秒登陆。

于 2012-07-21T03:51:08.023 回答
0

我认为您的解决方案还可以,但是您确实不需要删除文件。您可以在任务管理器中编写一个任务,负责每天一次删除所有这些文件(只是清理目录)。看看这里,有一些解决方案可以使 de 目录干净。

于 2012-07-21T03:53:29.910 回答
0

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

于 2012-07-21T03:59:45.287 回答