在JAVA中按部分发送文件

时间:2012-09-22 07:55:48

标签: java java-ee client-server java-server

我正在JAVA中编写一个客户端服务器程序,我正在从服务器向客户端发送文件。由于文件大小可能很高,因此我决定将文件分成5个部分,然后将其发送到同一个程序客户端有5种不同的主题。

  • 我的算法是使用Java Zip API并创建要发送的文件的zip文件,然后我将Zip文件分成5个部分。 问题是[ZIP API] [2]中没有可以分割文件的方法。 我指的是通过Thread发送文件的This is the tutorial。 任何可以指导我的人都是我的算法有什么问题或者我是否需要采用不同的策略?

2 个答案:

答案 0 :(得分:2)

您应该将拉链部分与分割部分分开。如果你必须将这些发送到客户端,你可能不希望在等待客户端请求下一个块时将完整的zip文件保留在内存中......所以最简单的方法是首先压缩到磁盘,然后以块的形式提供该文件。那时,它根本不是拉链文件 - 实际上对于某些文件类型(例如图像,声音,视频)而言,你可能根本不想通过zip文件。

我建议你告诉客户端文件名和大小,然后让客户端请求它想要的文件的任何部分。然后它可以决定使用什么块大小:您只需要寻找文件的正确位并提供客户端请求的数据。

答案 1 :(得分:0)

分解文件不是ZIP功能。您可以从生成的zip文件创建多个字节数组(通过分割数组)并在不同的线程中发送每个段。这与昔日的下载经理会做的类似。

然后客户端将拥有以正确顺序重新组装字节数组的代码。您可能需要为每个段添加一些其他信息,例如正确的序列,要还原的文件名以及预期的段数。