【发布时间】:2013-11-17 19:34:47
【问题描述】:
我有一段代码使用DataOutputStream 包裹FileOutputStream 写入文件,并使用DataOutputStream 包裹ByteArrayOutputStream 写入字符串,两者都使用writeDouble() 方法.
然后我尝试从文件中读取并将从文件中读取的内容与字符串进行比较,(BufferedReader 包裹在 StringReader 包裹 b(ByteArrayOutputStream).toString() 和 BufferedReader 包裹在 a FileReader) 并得到相同的结果。
虽然
System.out.println(StrRead1.toString())
和
System.out.println(StrRead2.toString())
在终端打印相同的东西,当我使用
比较两者时(StrRead1.toString().equals(StrRead2.toString()))
它们永远不相等。(Str1 和 Str2 为 StringBuilders)
有人可以帮帮我吗?谢谢。
【问题讨论】:
-
它们在视觉上可能看起来相同,但可能有尾随空格、换行符等。
-
它可能是尾随空格。使用 StrRead1.toString().trim().equals(StrRead2.toString().trim());
-
试试
System.out.println("[" + StrRead1.toString() + "]");(2 也一样)。这是识别可能导致此问题的大多数(但不是全部)字符的好方法。 -
如果您将更多代码放入问题中,可能会更容易发现问题。
-
为什么要创建
Strings 而不是使用FileInputStream和ByteArrayInputStream并逐字节比较?
标签: java stringbuilder dataoutputstream bytearrayoutputstream