BufferedInputStream缓冲区大小问题

littleant1 2010-07-18 11:12:05
import java.io.*;
public class InputStream {
public static void main(String[] args) throws Exception
{
File f=new File(File.separator+"eclipse workspace");
FileInputStream fis=new FileInputStream(f+File.separator+"1.txt");
BufferedInputStream bif=new BufferedInputStream(fis);
byte[] by=new byte[1024*1024];
int len=bif.read(by);
System.out.println(new String(by,0,len));

}
}

当我把byte设为1024×10的时候可以显示1.txt的代码,当改为1024×1024的时候就不能显示该代码,在控制台一闪而过,是怎么回事呢?我初学Java,谢谢各位帮忙啊
...全文
487 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DAVE_LUO 2010-07-19
  • 打赏
  • 举报
回复
意思是,new String(by,0,len) 只按实际长度的内容来显示吧。
dr_lou 2010-07-19
  • 打赏
  • 举报
回复
new String(by,0,len) 你的这句话就不会造成后面跟随空格的问题啊。我测试了,没问题。
luozhangwen 2010-07-19
  • 打赏
  • 举报
回复
如果文件不是特别大的话,可以把byte buff = new byte[(integer)file.length()]
luozhangwen 2010-07-19
  • 打赏
  • 举报
回复
一闪而过是因为你文件太小 + 你new byte[1024*1024]如果不足的话它会补些东西. 你把控制台放大就可以看到了.

类似这类读取最好还是用bufferedreader.

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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