日期:2014-05-20  浏览次数:20656 次

是不是传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;