您不能在同一套接字上混合使用缓冲流和非缓冲流/读取器/写入器。您将丢失缓冲区中的数据。
在套接字的使用寿命内使用相同的流对。在这种情况下,我将使用
DataInputStream和
DataOutputStream,以及
readUTF()/writeUTF()消息和文件名的方法。您还需要在文件之前发送文件长度,除非文件是通过连接发送的最后一件事:否则,对等方将不知道何时停止读取文件并返回并重新开始读取消息。

您不能在同一套接字上混合使用缓冲流和非缓冲流/读取器/写入器。您将丢失缓冲区中的数据。
在套接字的使用寿命内使用相同的流对。在这种情况下,我将使用
DataInputStream和
DataOutputStream,以及
readUTF()/writeUTF()消息和文件名的方法。您还需要在文件之前发送文件长度,除非文件是通过连接发送的最后一件事:否则,对等方将不知道何时停止读取文件并返回并重新开始读取消息。