2015-09-25 39 views
0

傳輸網絡上的文件之間字節的代碼是用Java編寫的1.7什麼是Java中

最好的方式,我想就慢一些重大修改二進制文件network.To防止網絡連接而不是直接寫入我寫入新文件的文件。當我完成寫入新文件時,我刪除舊文件並將新文件重命名爲舊文件。

我的問題是它是更好地爲新的文件是 1.在相同的位置與原始文件 2.本地計算機

與1.寫入文件可能比較慢,但是實際上,重命名應該更快,大多數情況下會立即生效。 2寫入文件應該更快,但重命名filwe會更慢。

我覺得答案是1

其實如果我打開一個Filechannel這兩個文件和傳輸文件直接從一個通道到另一個做字節都來自網絡,我的計算機和回網絡還是可以的他們直接從網絡上的一個地方複製到其他地方。

回答

0

我在這裏猜測,但文件可能通過您的計算機上的某些網絡文件系統(NFS,SMB)進行安裝。所以你可以像本地文件一樣訪問它們;他們只是比較慢。

至於第一個問題:你沒有獲得任何東西,首先在本地寫文件。最後,您總是需要將文件移動到網絡中的正確位置,並且始終涉及「複製所有字節」操作。例如,當兩個文件不在同一個硬盤/裝載上時,Java的File.rename()將會失敗。所以您必須手動將字節複製到目標文件夾。有些IO框架在需要時爲您做,但它總是會發生。

至於在兩個遠程主機之間直接複製數據:有幾個網絡文件系統支持這些操作,但它是一個特殊功能。通常的罪魁禍首(NFS和SMB)不會。他們總是從源下載整個文件,然後將其上傳到目標。

+0

所以問題一的答案是1,是有道理的。這適用於任何情況下都可以使用的應用程序,但最有可能的情況是使用NTFS的NAS服務器安裝網絡驅動器的Windows計算機,另一種可能是連接到NAS的Mac。它不在teo遠程主機之間進行復制,只是將遠程主機上的文件複製到同一個遠程主機上 –

+0

在遠程主機上覆制文件不是一種常見操作,網絡文件系統提供特殊命令來執行此操作(和您的文件API也必須支持它)。當您可以打開遠程shell時,可以從遠程命令行運行復制命令。一些網絡文件系統支持分發數據以實現容錯。但這只是鏡像/克隆操作。 –

+0

它不復制所需的完整文件,而是將大量字節從一個文件傳輸到另一個文件或由本地機器控制的遠程驅動器。 –