首页 >Java >java教程 >为什么我通过套接字进行 Java 文件传输会生成空文件?

为什么我通过套接字进行 Java 文件传输会生成空文件?

Linda Hamilton
Linda Hamilton原创
2024-11-04 13:15:01416浏览

Why is My Java File Transfer Over Sockets Generating an Empty File?

通过套接字传输 Java 文件:解决损坏的文件问题

您的 Java 程序旨在通过套接字在客户端和服务器之间传输文件。但是,服务器当前正在生成一个空文件。为了纠正这个问题,让我们检查服务器和客户端代码。

服务器代码:

从服务器代码开始,问题源于读取文件字节一旦使用 in.read(bytes)。如果文件很大,此方法可能无法捕获所有字节。相反,我们应该循环读取字节:

<code class="java">int count;
byte[] buffer = new byte[8192]; // or 4096, or more
while ((count = in.read(buffer)) > 0) {
    fos.write(buffer, 0, count);
}</code>

客户端代码:

接下来,在客户端代码中,您实际上并没有写入文件字节到输出流out。应使用 out.write(bytes) 行:

<code class="java">out.write(bytes);</code>

通过这些修改,程序应按预期正确发送和接收文件。

以上是为什么我通过套接字进行 Java 文件传输会生成空文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn