爱问知识人 爱问教育 医院库

帮忙看一段小程序,为什么注释掉这句就陷入死循环

首页

帮忙看一段小程序,为什么注释掉这句就陷入死循环

importjava.io.*;importjava.nio.*;importjava.nio.channels.*;publicclassChannelCopy{privatestaticfinalintBSIZE=1024;publicstaticvoidmain(String[]args)throwsException{/*if(args.length!=2){System.out.println(" ");System.exit(1);}中文*/FileChannelin=newFileInputStream("ChannelCopy.java").getChannel(),out=newFileOutputStream("test.txt").getChannel();ByteBufferbuffer=ByteBuffer.allocate(BSIZE);while(in.read(buffer)!=-1){buffer.flip();//Prepareforwritingout.write(buffer);buffer.clear();//###Prepareforreading}}}///:~我设断点试过了,把带###号的这句(buffer.clear();)去掉,程序就会陷入死循环,in.read(buffer)永远也不是-1,但有###这句的话循环体中的语句只执行一次,下一次in.read(buffer)就是-1了,循环就退出了。这是为什么呀?到没到in这个通道的末尾和buffer是否被清空有什么关系?我觉得没关系呀。咱们平时执行read()时不时都会先clear()缓冲区吗?

提交回答
好评回答
  • 2008-03-30 10:20:16
    bu.flush.
    为什么要用clear.
    clear没用过.
    clear是清空?
    还是写完再清空?
    反正没用过.

    l***

    2008-03-30 10:20:16

类似问题

换一换

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 175-194
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):