关于io流字节数组缓冲,请大家帮我解答一下,字节数组我定义的长度是1024,实际用来读的文件超过了1024字节,为什么程序依旧可以进行,输出的文件且大于1024

qq_42143348 2020-05-02 02:08:23

字节数组我定义的长度是1024,实际用来读的文件超过了1024字节,为什么程序依旧可以进行,输出的文件且大于1024字节。
...全文
776 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dev_Seven 2020-11-16
  • 打赏
  • 举报
回复
比如说 你的数据写出是UTF-8编码的格式 但你接收数据的文档是GBK编码的格式 不管怎么说 只要编码的格式不一样 就会出现乱码问题
ywfpclt 2020-05-09
  • 打赏
  • 举报
回复
引用 4 楼 qq_42143348的回复:
[quote=引用 3 楼 qybao 的回复:] 因为你每次只是从文件流读入1024个字节(并不是一次性读取完),然后做完相应的处理后再继续从文件流读入1024个字节,如此循环,直到文件流没有数据。 如果你想一次性读入文件全部信息,那么buff的长度就不是1024,而是改成文件的真实长度,比如 RandomAccessFile rf = new RandomAccessFile("xxx\\yyy.mp3", “r”); int len = (int)rf.length(); //获取文件的长度 byte []buff = new buff[len]; //申请文件长度的字节缓存 rf.readFully(b, 0, len); //一次性读入全部内容, 这样就不用一次一次循环读取文件流了
谢谢大神,不过我还有一点没有明白还请您帮我解答一下 为什么复制文件会变成这样。[/quote] 文件编码不一样
qq_42143348 2020-05-04
  • 打赏
  • 举报
回复
引用 3 楼 qybao 的回复:
因为你每次只是从文件流读入1024个字节(并不是一次性读取完),然后做完相应的处理后再继续从文件流读入1024个字节,如此循环,直到文件流没有数据。 如果你想一次性读入文件全部信息,那么buff的长度就不是1024,而是改成文件的真实长度,比如 RandomAccessFile rf = new RandomAccessFile("xxx\\yyy.mp3", “r”); int len = (int)rf.length(); //获取文件的长度 byte []buff = new buff[len]; //申请文件长度的字节缓存 rf.readFully(b, 0, len); //一次性读入全部内容, 这样就不用一次一次循环读取文件流了
谢谢大神,不过我还有一点没有明白还请您帮我解答一下 为什么复制文件会变成这样。
qybao 2020-05-03
  • 打赏
  • 举报
回复 1
因为你每次只是从文件流读入1024个字节(并不是一次性读取完),然后做完相应的处理后再继续从文件流读入1024个字节,如此循环,直到文件流没有数据。

如果你想一次性读入文件全部信息,那么buff的长度就不是1024,而是改成文件的真实长度,比如
RandomAccessFile rf = new RandomAccessFile("xxx\\yyy.mp3", “r”);
int len = (int)rf.length(); //获取文件的长度
byte []buff = new buff[len]; //申请文件长度的字节缓存
rf.readFully(b, 0, len); //一次性读入全部内容, 这样就不用一次一次循环读取文件流了

ywfpclt 2020-05-02
  • 打赏
  • 举报
回复 1
意思是一次读1024个字节,下一次又读1024个字节,直到文件末尾没有数据可读为止 看那个while循环
KeepSayingNo 2020-05-02
  • 打赏
  • 举报
回复
这个数组只是一个缓冲区,你把数据写到一个文件里,这个文件所在的磁盘有多大,就能写多少数据进去

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧