Вопрос

I have a piece of code that writes to a file using a DataOutputStream wrapped around a FileOutputStream, and writes to a string using a DataOutputStream wrapped around a ByteArrayOutputStream, both using the writeDouble() method.

I then try to read from the file and compare what is read from the file, to the string,(BufferedReader wrapped around a StringReader wrapped around b(ByteArrayOutputStream).toString(), and BufferedReader wrapped around a FileReader) and get the same result.

Even though

System.out.println(StrRead1.toString()) 

and

System.out.println(StrRead2.toString()) 

print the same thing in the terminal, when I compare the two using

(StrRead1.toString().equals(StrRead2.toString()))

they are never equal.(Str1 and Str2 being StringBuilders)

Can somebody give me a hand? Thanks.

Это было полезно?

Решение

The result of writeDouble() is binary. You have no business trying to turn the result into a String, or read that data with a Reader. Use an InputStream and compare the bytes. Or use a DataInputStream and compare the result of readDouble() in each case.

But I really have no idea why you're doing this. writeDouble() is writeDouble(). It does the same thing, regardless of what output stream it's connected to.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top