Java string.equal方法不工作

Java string.equal方法不工作,java,string,bytearray,Java,String,Bytearray,我是java新手。我现在的问题是,我正在从客户端向服务器发送一个文件名。当我在服务器中打印该文件名时,它打印得很好,但它与我硬编码的字符串不匹配。例如:我将'teacher.pdf'作为文件名从客户端发送到服务器,然后我将收到的文件名与硬编码字符串'teacher.pdf'匹配,它不会匹配,最终返回false。我希望equal方法返回true(它应该返回) 下面是一段可能会说明问题的代码片段。”server'是这里套接字的对象,我使用字节数组读取文件名: InputStream is = nul

我是java新手。我现在的问题是,我正在从客户端向服务器发送一个文件名。当我在服务器中打印该文件名时,它打印得很好,但它与我硬编码的字符串不匹配。例如:我将'teacher.pdf'作为文件名从客户端发送到服务器,然后我将收到的文件名与硬编码字符串'teacher.pdf'匹配,它不会匹配,最终返回false。我希望equal方法返回true(它应该返回)

下面是一段可能会说明问题的代码片段。”server'是这里套接字的对象,我使用字节数组读取文件名:

InputStream is = null;
byte response [] = new byte [50];

is = server.getInputStream();
is.read(response);

String str_res = new String (response);

System.out.println ("Got reS: " + str_res);
System.out.println ( "Result: "+(response.toString()).equals ("Lecture.pdf"));
你需要写作

new String(response, "UTF-8").equals ("Lecture.pdf")

您将原始的未转换字节数组等同于字符串。字节数组永远不会等于字符串,因为它们是不同的类型。您还应该检查转换的字节数是否正确-如果发送1个字节,输出字符串应该包含多少个字符?检查构造函数,并使用以下命令跟踪实际读取的字节数:

int bytesRead = is.read(response);

与其将response.toString()与硬编码值进行比较,不如比较str\u res

toString()是字节数组的字符串表示形式

更改:

System.out.println ( "Result: "+(response.toString()).equals ("Lecture.pdf")); 
致:


那也没用。response.toString()是否足以将字节数组转换为字符串?打印字符串,然后打印字符串的长度以查看发生了什么。您可能使用了错误的字节数。我已经更新了答案。祝你好运你是对的!这就是问题所在。非常感谢:)这并没有解决它。顺便说一句,我想输入文件名并开始读取该文件,但这对我不起作用,因为转换为字符串后的文件名与我系统中的实际文件名不匹配(尽管teaching.pdf与我的代码存在于同一目录中)。你说str_res打印得很好?这是否意味着是打印出来的“讲座.pdf”?有多余的空间吗?
System.out.println ( "Result: "+(response.toString()).equals ("Lecture.pdf")); 
System.out.println ( "Result: "+str_res.equals ("Lecture.pdf"));