看看下面的代码
- Java code
boolean flagCR = false; out = new BufferedOutputStream(out); do { if((r = in.read(buffer)) <= 0) break; int start = 0; for(int i = 0; i < r; i++) { int c = buffer[i]; if(c == 10 && !flagCR && i >= 1) { out.write(buffer, start, i - start); out.write(13); start = i; } flagCR = c == 13; } if(start < r) out.write(buffer, start, r - start); } while(true);
为什么每次都要先判断c是不是等于10,每次都要一个byte一个的传,为什么每传完一个都要传一个13?
是不是得看看ASCII的相关内容?
------解决方案--------------------
嘿嘿:
这道题的意思是从IN读出数据,只要有数据就向文件中写入BUFFER的内容从start开始,一直到in得到的那个数为止。
写入13的目的是将CR写入文件缓冲区out 在JAVA中写入都是以ASCII码形式写入的所以你读出来的或写进去时都用一个简单的整形I接收就可以。
推荐使用DATAOUTPUTSTREAM包装类它可以实现写入或读出基本数据类型。
------解决方案--------------------
- Java code
if((r = in.read(buffer)) <= 0) break;