我們有一個企業應用程序,它將一些文件保存在網絡共享(\\ physicalfileserver \ files \)中。我們需要使用網絡共享,因爲應用程序安裝在通過LAN連接的多個物理服務器上分佈的多個應用程序服務器實例上。有時,我們需要在網絡共享本身上創建某些文件的副本,並將其與另一個名稱或新目錄(同一網絡共享中的同一個目錄)保存在同一目錄中(在同一網絡共享上)。什麼是創建文件副本的最有效方式?我不想在網絡上創建任何IO通信,因爲源文件和目標文件駐留在同一臺服務器上。這也增加了創建文件副本所需的時間。然而,從目前爲止我所看到的很難。通過網絡共享創建文件的複製
- 讀取輸入流中的文件,並通過具有不同路徑/名稱的輸出流將它們寫回服務器。
- FileUtils.copyFile()來自apache的commons。 JAVA的
- NIO通道庫(java.nio.channels.FileChannel.transferFrom())
但是,所有的人似乎將文件複製到服務器上執行程序,然後將數據複製回網絡共享,這是不是真的需要。
大師們認爲最好的方法可以處理這種情況嗎?由於一些限制,我只能使用JAVA 1.5/1.6,但也願意使用更高版本的Java。
該應用程序安裝在Windows 2008服務器上,網絡共享也存在於Windows 2008服務器上。
感謝
如果您擔心網絡帶寬問題,請嘗試在存在網絡共享的服務器上發出命令,以便以您的名義複製文件,然後將副本在本地完成。 – MadProgrammer
它是什麼服務器/操作系統? rexec呢? – OldProgrammer
謝謝。我正在考慮這個問題,但希望將它作爲最後的手段,因爲應用程序是多平臺的,我不想創建任何平臺特定的依賴關係。如果我在Unix中使用NFS或GFS掛載,複製的工作確實非常脆弱,但問題主要針對Windows,所以我想知道是否有任何方法可以通過java解決。 – Anshul