分类：电脑/网络-程序设计-JAVA相关
问题：帮忙看一段小程序，为什么注释掉这句就陷入死循环importjav 
import.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.javaimport.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()缓冲区吗?
回答：bu.flush.

为什么要用clear.

clear没用过.

clear是清空?

还是写完再清空?

反正没用过.