2015-09-25 146 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

它不复制所需的完整文件,而是将大量字节从一个文件传输到另一个文件或由本地机器控制的远程驱动器。 –