为什么Java的这种文件下载方式会出问题,是文件类型问题吗?

作者站长头像
站长
· 阅读数 21

为什么Java的这种文件下载方式会出问题,是文件类型问题吗?为什么Java的这种文件下载方式会出问题,是文件类型问题吗?为什么我用代码2来下载word或者ppt结果打开就是乱码txt文件就没这种问题,用代码1的都是正常的

回复
1个回答
avatar
test
2024-06-20

answer image

你这缓冲区始终是 1024,while 循环每次都写这么多,最后一次也是。可你总字节数一定是 1024 的整数倍吗?如果不是的话最后一次写的时候结尾不一堆乱字节吗?你 txt 没乱码估计也是因为文件太小的缘故,压根没有 1024,第一次就是最后一次,否则一样有乱码。

非要这么写的话也应该是:

int len;
byte[] bytes = new byte[1024];
while ((len = inStream.read(bytes)) != -1) {
  outStream.write(bytes, 0, len);
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容