Java UTFDataFormatException:格式错误的输入UTF格式

Java UTFDataFormatException:格式错误的输入UTF格式,java,sockets,Java,Sockets,我试图在通过UTF将文件发送到套接字服务器之前发送一些信息,但我只发送了一个文件名: File fil=new File(filepath); dos.writeUTF (fil.getName()); 它工作正常,但当我向其中添加一些自定义字符串时: dos.writeUTF((("@REQUEST@ROOM:"+roomName+"@FILENAME:"+fil.getName()))); 我得到这个错误: UTFDataFormatException: malfo

我试图在通过UTF将文件发送到套接字服务器之前发送一些信息,但我只发送了一个文件名:

   File fil=new File(filepath);  
   dos.writeUTF (fil.getName());
它工作正常,但当我向其中添加一些自定义字符串时:

  dos.writeUTF((("@REQUEST@ROOM:"+roomName+"@FILENAME:"+fil.getName())));
我得到这个错误:

 UTFDataFormatException: malformed input UTF Format

你能帮我一下吗

在编写时不会出现这种异常。在读取时得到它:通常是在输入中的下一个内容不是由writeUTF()生成时调用readUTF()时。换句话说,应用程序协议错误。在这种情况下,它不是由您发布的内容生成的,而是由您未发布的内容生成的

我不明白为什么不分别写扩展数据段和分别读扩展数据段,而不给自己带来连接然后再次拆分的麻烦


我也不知道所有额外的括号应该是什么意思。不要写多余的语法。

堆栈跟踪是什么?UTFDataFormatException:格式错误的输入UTF格式这是服务器上的日志。什么是异常堆栈跟踪?异常上没有堆栈跟踪,因为我没有jre-8的源代码。该语句没有意义。你不需要JRE源代码来获取堆栈跟踪。我找到了答案,谢谢你,但是顺便说一句,我将它们附加在一起的原因是更少(甚至一点)的通信,所以更高的速度速度差异是无法衡量的,但你这样做的额外复杂性、成本和风险肯定是。什么风险?你的意思是NPE异常可能性?如果这就是你的意思,我首先保证Reuqest不能为空:)或者我很高兴知道你的意思,我的意思是编码和解码不匹配的风险,所以你必须调试它们,如果你把它们分开,这要低得多。