read(Reader reader)

来源:互联网 发布:博尔特的肌肉数据 编辑:程序博客网 时间:2024/04/29 08:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        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
2
3
4
5
6
        while((cch = reader.read(ach, 0, BLOCK))>=0){if(cch=0)continue;        writer.write(ach, 0, cch);         }


完美的代码应该如下: 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    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();    } 
原创粉丝点击