将二进制文件读入字符串

桑多尔:

这一定很明显,但我无法弄清楚。我为此花了将近一整天。我很乐意给减轻我体重的人买啤酒。

File file = new File(filePath);
byte[] bytes = new byte[(int)file.length()];
DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));
dataInputStream.readFully(bytes);           
dataInputStream.close();            
return new String(bytes);

这是我的代码。我看到字节数组大小不合适,但是我找不到正确的大小。除此之外,内容也不是不正确的。似乎只有文字字符可以。

似乎从二进制文件中删除数据确实很痛苦,我真的很沮丧。

还有一件事:文件内容不是文本,可以是图片,视频或pdf之类的东西。

乔恩·斯基特(Jon Skeet):

如果你正在读一个二进制文件,你应该尝试把它当作好像它编码的文本。将其转换为这样的字符串是不合适的-您应该将其保留为字节数组。如果确实需要它作为文本,则应使用base64或hex表示二进制数据-其他方法可能会丢失数据。

如果readFully无例外地返回,则表明它已读取您请求的尽可能多的数据,应为整个文件。您已经设法轻松地从二进制文件中获取数据(尽管close()调用应该在finally块中)-只是将其转换为文本是个坏主意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章