1 | int BLOCK;
char ach[];
CharArrayWriter writer;
BLOCK = 1024;
ach = new char[BLOCK];
writer = new CharArrayWriter(BLOCK);
int cch;
_L2:
int cch;
cch = reader.read(ach, 0, BLOCK);
if(cch < 0)
break MISSING_BLOCK_LABEL_55;
if(cch <= 0) goto _L2; else goto _L1
_L1:
writer.write(ach, 0, cch);
goto _L2
EOFException e;
e;
reader.close();
return writer.toString();
|
//以上说明 <0 break; =0 继续 ,>0执行writer.write(ach, 0, cch);
主逻辑可以整理为如下:
1 | while((cch = reader.read(ach, 0, BLOCK))>=0){
if(cch=0)
continue;
writer.write(ach, 0, cch);
}
|
完美的代码应该如下:
1 | public static String read(Reader reader)
throws IOException
{
int BLOCK = 1024;
char ach[] = new char[BLOCK];
CharArrayWriter writer = new CharArrayWriter(BLOCK);
do
{
try
{
int cch = reader.read(ach, 0, BLOCK);
if(cch < 0)
break;
if(cch > 0)
writer.write(ach, 0, cch);
continue;
}
catch(EOFException e) { }
break;
} while(true);
reader.close();
return writer.toString();
}
|