我们有一个企业应用程序,它将一些文件保存在网络共享 (\\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 服务器上。
谢谢