我读了一个文件并将其转换为字符串(例如.jpg到字符串)
然后我将String写成文件,如(example.jpg)
但是Windows说它破碎的文件,并且无法查看
怎么了?
答案 0 :(得分:2)
您不能使用String来可靠地保存二进制数据(例如图像),除非您首先将其编码为类似Base64的内容 - 它旨在表示String中的任何二进制值。否则,字符串仅设计为对字节值的子集进行操作。 (例如,我无法在没有编码的情况下在字符串中映射0字节值 - 至少假设像ASCII或UTF-8这样的东西。)
如果你比较你之前和之后的字节,你会发现它们不一样。相反,使用类似字节数组(byte[] myImage
)来存储数据。
答案 1 :(得分:1)
将文件转换为字符串时,您将使用编码,但并非所有编码都允许所有字节组合作为有效字符。因此,当你再次写出它时你已经损坏了jpeg,无效的字符/字节组合通常要么完全被遗漏,要么被一些像问号这样的东西所取代,这就是一个不快乐的jpeg。
答案 2 :(得分:0)
我建议您查看Java Almanac中的示例,因为您无法使用String
阅读图片。