当前位置: 代码迷 >> J2SE >> 是不是传ASCII文件和传byte文件有所不同?该怎么解决
  详细解决方案

是不是传ASCII文件和传byte文件有所不同?该怎么解决

热度:21   发布时间:2016-04-24 12:59:03.0
是不是传ASCII文件和传byte文件有所不同?
看看下面的代码
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;
  相关解决方案