-2

我们有一个企业应用程序,它将一些文件保存在网络共享 (\\physicalfileserver\files\) 上。我们需要使用网络共享,因为应用程序安装在多个应用程序服务器实例上,这些应用程序服务器实例分布在通过 LAN 连接的多个物理服务器上。有时,我们需要在网络共享本身上创建某些文件的副本,并将其保存在同一个目录(在同一个网络共享上)以不同的名称或在一个新目录中(再次在同一个网络共享上)。创建文件副本的最有效方法是什么?我不想在网络上创建任何 IO 流量,因为源文件和目标文件位于同一台服务器上。它还增加了创建文件副本的时间。然而,从我目前所见的情况来看,这很困难。

  • 读取输入流中的文件并通过具有不同路径/名称的输出流将它们写回服务器。
  • FileUtils.copyFile() 来自 apache commons。
  • JAVA 的 NIO Channels 库 (java.nio.channels.FileChannel.transferFrom())

但是,它们似乎都将文件复制到执行程序的服务器,然后将数据复制回网络共享,这并不是真正需要的。

大师们可以建议什么是处理这种情况的最佳方法?由于一些限制,我只能使用 JAVA 1.5/1.6,但我也愿意接受使用更高 Java 版本的建议。

该应用程序安装在 Windows 2008 服务器上,并且网络共享也存在于 Windows 2008 服务器上。

谢谢

4

1 回答 1

0

如果您想避免网络流量,您可以用 Java 编写一个小型服务器,允许您在本地复制文件(这将在文件服务器本身上运行)。确保这一点非常重要,因为如果有人可以使用它来覆盖系统文件,这可能会带来巨大的安全风险。

于 2013-01-08T03:09:31.147 回答